sol - USACO 2024 JAN B

1|0T1:

考虑 ai=ai1(i>1) 的情况,这个时候一个数一个数扩展就可以完成,再考虑 ai=ai2,aiai1(i>2) 的情况,显然 ii+2 这个区间都可以变成 ai,那么就成了第一种情况。

注意行末空格。

2|0T2:

玄学。

按照题意模拟,但是这样会 TLE 五个点。这样是因为会出现在 kk+1 这两个点中反复跳的情况,卡一下操作次数即可,我用的是 107

3|0T3:

还是玄学。

看到区间问题,想到前缀和和差分。

不要问为什么不是数据结构,问的话因为这是铜组。

举个例子:1 2 -2 -7 5,差分一下:1 1 -4 -5 12,我们手动算出下一步应该是 0 0 -5 -11 0,差分一下:0 0 -5 -6 11

看得出来吗?看不出来吧。

再来差分一下:1 1 -4 -5 12 变成了 1 0 -5 -1 170 0 -5 -6 11 变成了 0 0 -5 1 17,发现了什么?对,第一个元素变成 0 了?!根据这个推广到答案就是差分数组的差分之和(绝对值)。

设当前 a 数组为 a1,a2,a3,a4,第一遍差分:a1,a2a1,a3a2,a4a3,再差分一遍:a1,a2a1,a3+a12a2,a4+a22a3

下一步根据题目,a={0,a22a1,a33a1,a44a1},差分两遍后:0,a22a1,a32a2+a1,a42a3+a2,与上一个的差别就是第一个的 a1 变成了 0

感性理解一下:

  • ai>0,那么 (i,n] 这个区间减一个等差数列,那么差分的差分数组下标大于 i 的不变,第 i 位变成 0,以此类推。

  • ai0 同理。


__EOF__

本文作者ようこそ!
本文链接https://www.cnblogs.com/ydq1101/p/17991940.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   ydq1101  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
点击右上角即可分享
微信分享提示