AtCoder Regular Contest 171
1|0Preface
小补一场ARC,D还是很有意思的但想了半天不会,鉴定为纯纯的彩笔
2|0A - No Attacking
考虑怎么放rook能使得留下来能放pawn的格子数量最多,手玩一下会发现先按照的顺序放,放满后再接着放是最优的
手玩一下可以得出在放了个rook后最多能放的pawn的个数:
- 时,个数为
- 时,个数为
3|0B - Chmax
原问题可以被转化为,对于每个点,若则连一条的有向边,否则不连边;最后要从每个点出发都能走到
首先考虑显然无解的情况,比较显然的时当有的元素出现时一定不合法
另外我们把所有相同的数看作一类,并将一类的数中下标最大的记为end,则所有end位置必须满足
接下来考虑计算方案数,不妨考虑从前往后确定每个数的取值数量,分类讨论:
- 若的后面还有和它一类的点(即不是end),则只能连向,此时方案数唯一
- 若的后面没有和它一类的点(即是end),则可以在下标的点中选择一个没有入度的点作为
考虑第二种情况的方案数很容易计算,总复杂度
4|0C - Swap on Tree
很有意思的一个Counting题,算是那种不难但是需要想一下的类型
考虑两种方案本质相同的充要条件,首先很容易发现一个必要条件就是选择需要操作的边集要相同,这个手玩一下会发现很显然
但显然操作的顺序也会影响,不妨拿一个菊花图为例,不难发现如选择了中心相邻的条边,则共有种本质不同的结果序列
考虑将这个结论推广,不难发现总方案数等于,即对于某个确定的选边方案,其贡献为每个点度数(只考虑选中的边)的阶乘
要求这个也很简单,不妨统一在向下的方向上统计贡献,设表示处理了的子树,且与其父亲的边是否要选中的贡献
对于每个点,对其儿子的跑一个类似于背包的东西即可合并方案数,然后统计的贡献时注意分是否要往上连讨论一下即可
总复杂度
5|0D - Rolling Hash
感觉不难的一个题,但我犯病了想着用前缀和算Hash值的时候被常见的形式固定死了,导致没法转化出关键一步直接GG
首先由于题目中给一个串的Hash值定义和我们熟悉的字符串Hash完全相同,因此考虑设Hash函数的前缀和数组为,则,由于式子中含有很难处理
其实这就完全陷入了陷阱之中,我们不妨稍微修改下Hash函数前缀和的定义,直接令(注意和传统的定义的区别就是直接把每一个位置的位权定死)
这样做的好处就是可以发现此时,而的充要条件就变成了,这个条件就非常好
不难发现当确定了后自然就确定了,而且二者可以相互转化,因此只需要判断是否有合法的序列即可
不妨把一个限制看作一条的双向边,则题目等价于判定能否用种颜色给某个图染色,使得任意相邻两点的颜色不同
这个问题有个经典的DP做法,设表示将点集为及其导出子图染色所需的最小颜色数,每次转移的时候枚举的子集,若是独立集则转移
总复杂度,应该可以用类似sosdp或者FMT之类的科技优化到,但直接上枚举子集已经足以通过此题
6|0Postscript
最近慢慢要开始准备给新一届的暑假前集训搬题了,可能能补题的时间会变少一些,但还是尽量能补就补吧
__EOF__

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