copilot给了个动态规划的解法,我再根据题意改了下,看起来能得出解,就是时间复杂度不好。
解题思路:
给定了区间个数n和整数x,平均值avg=x/n,由方差定义,var=sum((avg-ai)**2)/n.
dp[n][x] = 选择前n个区间的数,它的和为x时,sum((avg-ai)**2)的最小值
那么 dp[n][x] = min(dp[n-1][x-k]+(avg-k)**2) k的范围为[li,ri]
复杂度为 x*sum(|ri-li|),x比较大的时候会超时。
【 在 mars1999 的大作中提到: 】
: 题目描述
: 给定正整数n,q 和 n 个区间 [li,ri]。
: 有 q 组询问,每次询问给定一个整数 x。在每个区间内选择一个整数 ai(li≤ai≤ri) ,使得所选整数的总和等于 x,并使得选出的 a 序列的方差最小。输出方差最小值。保证存在至少一种合法的选取方案。
: ...................
--
FROM 103.90.178.*