AtCoder Regular Contest 169
A - Please Sign
某个
从大到小找到第一个和非零的深度即可。
B - Subsegments with Small Sums
直接考虑以每个位置为开头的段在答案中出现了多少次即可。
C - Not So Consecutive
直接 DP,设
其中
前缀和优化一下,可以做到
D - Add to Make a Permutation
首先,假设我们不进行取模操作,设最后得到的数列是
考虑什么样的
; ; 。
(赛时我漏了第三个条件,而且用的是另外一种做法,没法处理这个条件。)
然后发现最优的
性质 1:假如
是递增的,那么最优的 是不降的。
证明:交换一对逆序的
性质 2:假如
是递增的,那么最优的 形如 。
证明:由于
于是我们只需要找到最小的
E - Avoid Boring Matches
怎么想到的???
首先考虑判定一个串
如果
- 假如
,那么它和最后一个 配对一定是最优的; - 否则,它和它后面的第一个
配对是最优的。
这样就可以将长为
考虑所有长为
对于串
,设 表示将 中的 看作 , 看作 , 位置的前缀和。
不是 boring 的,当且仅当对于每个 ,都有 。
回到原问题,算出每个
所以答案就是
F - Large DP Table
关键结论:
考虑两个点
满足 。将 走到 的那条路径画出来,路径会穿过 这条线(也就是说, 中有某一个造成了一次贡献),当且仅当 。否则,路径会穿过 这条线。
然后用单调栈随便做做即可。时间复杂度
作者:alan-zhao-2007
出处:https://www.cnblogs.com/alan-zhao-2007/p/17896293.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?