月明船笛参差起,风定池莲自在香。——纳凉 【宋】 秦观|

CSP_AK_zyz

园龄:1年8个月粉丝:2关注:1

【学习笔记】P8590 『JROI-8』这是新历的朝阳,也是旧历的残阳

比较有思维的一个数学题,写个笔记纪念一下。

显然,为了使 i=1nai2 最大,整数一定要放最后一段,即求 i=1n(ai+m)2,而负数需要分情况考虑,即放第一段还是最后一段,中间的 m2 是空段,只考虑 1m 这两个极端情况。

可以设中间节点 tai[1,t] 变为 (ai[1,t]+1)2,而 ai(t,n] 变为 (ai(t,n]+m)2,即 ai 变为 max((ai+1)2,(ai+m)2),现求 t,即有 tmax使得 (atmax+1)2>(atmax+m)2

然后,通过 t 求出 qj=i=1t(ai+1)2+i=t+1n(ai+m)2

若直接计算 qj=i=1t(ai+1)2+i=t+1n(ai+m)2 显然超时,考虑优化。

i=1t(ai+1)2 展开,通过 (x+y)2=x2+2xy+y2 得:

i=1t(ai+1)2=i=1t(ai2+2ai+1)=i=1tai2+2i=1tai+t

i=t+1n(ai+m)2 展开,通过 (x+y)2=x2+2xy+y2 得:

i=t+1n(ai+m)2=i=t+1n(ai2+2aim+m2)=i=t+1nai2+2i=t+1naim+m2(nt)

qj=i=1t(ai+1)2+i=t+1n(ai+m)2=i=1tai2+i=1t2a+t+i=t+1nai2+i=t+1n2aim+m2(nt)

合并,得

qj=i=1nai2+2i=1tai+2mi=t+1nai+m2(nt)+t

在输入时求出 ki=1nai2,即求出所有 qj[1,k]i=1nai2 的和,即 j=1ki=1nai2

m 单调递增时,t 是始终是不上升的,即若 mi<mj,则 titj,即原来的 (ak+mi)2 变为了 (ak+mj)2,显然 (ak+mi)2<(ak+mj)2,即若原来的 ak=max((ak+1)2,(ak+mi)2)=(ak+1)2,则现在对于 ak(ak+mj)2(ak+mi)2 更容易成为 akmax,即 t 更可能变小,放在最后一段的个数更可能变多。

本文作者:CSP-AK-zyz

本文链接:https://www.cnblogs.com/CSP-AK-zyz/p/17691918.html

版权声明:本作品采用 BY-NC-SA 4.0 许可协议进行许可。

posted @   CSP_AK_zyz  阅读(47)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起