ABC 388 (DEG)
赛时4题,打得很差的一场。尤其是E题,赛时一直被卡,直到结束看群友的结论后顿然醒悟,不到3分钟码出并AC,只能恨自己赛时为什么这么sb...
D
模拟 + 差分
从左到右枚举
numout = min(n - i, a[i] + num)
给后面的人糖的区间范围是
num = i - 1 - sum_stop
最后每个人的糖数即为:
max(0 , a[i] + num - (n - i))
具体细节见代码
E
贪心 + 思维,最想抽自己的一集
只需要注意答案数量不超过
然后就没有然后了,直接前一半与后一半贪心匹配就好了,二分
G
二分 + ST表 + 推公式
这道题不能延续题解中E的做法,需要换一个思路。其实E还有另一种做法:
二分答案,然后取答案作为前后缀长度,这样转化为判断前后缀是否一 一匹配(证明不难,略)。
前后缀一 一匹配在E中可以线性双指针来判断,在G中就不行了,因为要对
预处理
对于询问区间
r - pos = l + k - 1 - i
即
T[i] <= pos = r - l - k + i + 1
将带
T[i] - i <= r - l - k + 1
这个不等式是对任意
max(T[i] - i) <= r - l - k + 1 (l <= i <= l + k - 1)
因此,若上式满足,则当前二分的前后缀匹配,可以进一步扩大正在二分的答案
可以发现左边是求区间最大值,由于无修改,故可以用ST表预处理来维护区间
总时间复杂度为
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验