AtCoder Regular Contest 153(持续更新)
1|0Preface
B题粗糙了改了好几个版本,最后索性从头理了一遍思路才过
然后剩下40min想C又歪了(构造题精通的被动消失了),还剩25min的时候忍不住了看LPL去了
话说现在的ARC感觉和以前的AGC难度相当啊,不过也许是没有陈指导教我我什么都做不来
2|0A - AABCDDEFE
就是用类似康托展开的思路来算每一部分的值,直接看代码吧
3|0B - Grid Rotations
话说我比赛时的做法怪的很,还找不到方法解释,结果现在写Editorial的时候就想到个很好的解释法
先讲比赛时想的,首先容易发现行和列的情况可以分别独立考虑,我们只要求出每一行在操作后变成哪一行即可,记为
考虑对行的某次旋转操作,观察到前半部分每次对换的位置的下标之和为,后半部分每次对换的下标之和为,这两个在模意义下时一样的
因此对于某个行转变后的值就是在模意义下的值,因此我们根据环的性质可以发现最后一定可以形成一个环的形态
当然上面的说法不是很明显,我们考虑换一种方法理解
我们考虑让第行和第行相连,在行之间形成一个环,同时考虑一次旋转操作不会影响每一行相邻的行是什么
举个例子,比如时,原来初始时环的形态是,在进行操作后变成
不难发现每个数相邻的两个数都没有变,变化的只是所在的位置和与其相邻的的方向而已
因此我们只要维护每次旋转后的位置即可,列的情况完全相同
4|0C - ± Increasing Sequence
原来是个如此simple的构造题,给我CPU干过载了
我们不妨先进行一次很naive的尝试,令,并统计出此时的值
若则显然直接输出即可,否则我们求出的前缀和数组,并分类讨论:
- 若,我们考虑找到第一个的位置,然后我们发现每当我们将减时,最后的就会恰好减,因此我们直接让减去即可
- 若,类似上面的思路,我们设第一个的位置为,直接让加上即可
考虑到的范围是级别的,因此可以满足的限制
5|0D - Sum of Sum of Digits
好劲的数位DP
首先一眼把每一位分开考虑贡献,我们设表示序列的答案,表示的最后一位为时的答案
不难发现,而的转移就是考虑每个数最后一位的贡献,但是要注意进位问题
举个例子,设,则有:
因此我们只需要枚举的每一位,然后把贡献分开算即可,现在的问题就是怎么把进位与否这一信息压缩到DP的状态里
我们观察一下,假设现在枚举的是的第位,我们令,然后将从小到大排序,设
可以发现,当时不会产生进位,当时产生一个进位,当时产生两个进位
以此类推,当时产生了个进位,换句话说的不同取值实际上只是被划分成了个区间,区间内的选取是等价的
因此我们不需要记录哪个数产生了进位,只要记下在做完第位后有几个数进位即可
具体实现可以用桶记录下每一位上每种数的个数来加速转移,复杂度
__EOF__

本文链接:https://www.cnblogs.com/cjjsb/p/17056375.html
关于博主:复活的ACM新生,目前爱好仅剩Gal/HBR/雀魂/单机/OSU
版权声明:转载请注明出处
声援博主:欢迎加QQ:2649020702来DD我
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话