全网首证,洛谷题解同步发布
CSP-S惊现两道黑题,第一届CSPer跪求改回NOIP( 这到底是人性的扭曲,还是道德的沦丧)
首先,这道题需要一个结论 (打表大法好):
对于任何 i i i ,最后一块尽量小,平方和越小
若成立:
s u m i = ∑ j = 1 i a j sum_i= \sum^i_{j=1} a_j sumi=∑j=1iaj
令 d p i dp_i dpi为最大且满足 s u m d p i − s u m d p d p i ≤ s u m i − s u m d p i sum_{dp_i}-sum_{dp_{dp_i}} \leq sum_i-sum_{dp_i} sumdpi−sumdpdpi≤sumi−sumdpi
INT ans=0;
for(int i=n;i;i=dp[i])
ans+=(sum[i]-sum[dp[i]])*(sum[i]-sum[dp[i]]);
print(ans);
单调队列优化可O(n)
再打一个压位高精即可AC
本题解良(hei)心提供证明:
part1:
当 i ≤ 2 i\leq2 i≤2时,一定成立。。。
太显然了,就不证了。。。
part2:
前方高能
考虑数学归纳法
假设已证当 i < x i < x i<x时成立
令 a n s x = ∑ ( s u m i − s u m d p i ) 2 ans_x=\sum (sum_i-sum_{dp_i})^2 ansx=∑(sumi