CSP2019 划分

博客介绍了CSP-S比赛中出现的难题,通过数学归纳法详细证明了问题的结论,并提供了部分代码。文章讨论了题目的难度以及解题策略,包括单调队列优化和压位高精度的应用。
摘要由CSDN通过智能技术生成

全网首证,洛谷题解同步发布

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} sumdpisumdpdpisumisumdpi

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 i2时,一定成立。。。
太显然了,就不证了。。。

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值