ARC171 B~E 四个数数
A 比较简单就不放了,这样刚好是全是数数题
F 先咕咕咕一会。
B
link
其实就是对于所有 的 到 连边,然后 就是 号点在的链上的最后一个点。
考虑集合 ,显然如果需要有解那么 中最大值必定为 ,而且这些点一定从小到大连成一条链,然后 不会连边。
由于 是一个排列,所以此时 一定是另外一个集合里面最小的一个元素。
令所有 的 从小到大排序依次为 , 能取到的合法的个数为 。
对于 ,我们注意到 并且这 个数是严格包含 个数字的。
考虑乘法原理,显然需要从限制更加严格的开始考虑,那么答案就是 。
实际上 只需要开个桶扫一遍就能得到了。
https://atcoder.jp/contests/arc171/submissions/50008176
C
link
引理1:两次操作的边集不同,那么最后得到的 不同。
证明:对于任意一条边,考虑断掉这条边,构成的两个点集上 组成的集合。注意到只有在对这条边操作时两边的集合会改变,所以两个方案中有一条边操作了另外一条边没有操作那么最后的 一定不同。
引理2:对于两次操作,如果操作的边集相同,如果对于任意点,当且仅当与这个点相连的所有操作过的边的相对顺序都相同,这两次操作得到的 是一样的。
证明:考虑归纳法。如果操作仅有一条边或者没有操作显然成立。考虑新增一个边 ,这条边与不和 两点相连的边的出现顺序对答案没有影响,与 两点相连的边出现顺序一定有影响,得证。
根据上面的引理,假设与 相连的点有 被操作,那么答案就是 。
设 为 这个子树与父亲相连的边没有操作/操作的方案数。
对于每次转移设 为 这个子树目前 个儿子向它连边的方案数。
使用 树形 DP 即可。答案显然是 。
https://atcoder.jp/contests/arc171/tasks/arc171_c
D
link
注意到 是质数,所以 等价于 。
每个后缀看成一个点,要求不相同的两两连边,就变成 个点(注意空后缀)染 种颜色要求每条边相邻的点颜色不同。
状压,先算出每个点集是不是独立集,为了方便记 , 为给集合 的元素染色需要最少的颜色数量。显然 。
。
https://atcoder.jp/contests/arc171/submissions/50404418
E
link
考虑观察样例研究一下这个性质。
注意到每次一定是横着跳竖着条循环往复然后回到原来的位置。所以 为奇数无解。
发现横着或者竖着跳不会互相影响,所以分开考虑最后乘起来再 就是答案(第一次可以横着也可以竖着)。
考虑横着跳。
发现每次横着跳都会占用两个相邻的列。
由于起点是给定的,如果最后是从左边过来,那么起点应该在两个相邻的列中的左边,否则是右边。
我们注意到只有最后一次并不是任意选的。我们设最后一次可以从 个位置过来,那么如果圈定了列之后,总共有 种方案。
考虑确定这 列。除了起点所在的两个列需要分类讨论,其余的直接用捆绑法计算即可。
https://atcoder.jp/contests/arc171/submissions/50409834
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具