ARC171 B~E 四个数数

A 比较简单就不放了,这样刚好是全是数数题
F 先咕咕咕一会。

B

link
其实就是对于所有 Pi>iiPi 连边,然后 Ai 就是 i 号点在的链上的最后一个点。
考虑集合 Si={jAj=i},显然如果需要有解那么 Si 中最大值必定为 i,而且这些点一定从小到大连成一条链,然后 Pi<i 不会连边。
由于 P 是一个排列,所以此时 Pi 一定是另外一个集合里面最小的一个元素。
令所有 Ai=ii 从小到大排序依次为 c1,c2,,cmpci 能取到的合法的个数为 di
对于 ij,我们注意到 didj 并且这 dj 个数是严格包含 di 个数字的。
考虑乘法原理,显然需要从限制更加严格的开始考虑,那么答案就是 (dii+1)
实际上 di 只需要开个桶扫一遍就能得到了。
O(n)
https://atcoder.jp/contests/arc171/submissions/50008176

C

link
引理1:两次操作的边集不同,那么最后得到的 a 不同。
证明:对于任意一条边,考虑断掉这条边,构成的两个点集上 a 组成的集合。注意到只有在对这条边操作时两边的集合会改变,所以两个方案中有一条边操作了另外一条边没有操作那么最后的 a 一定不同。
引理2:对于两次操作,如果操作的边集相同,如果对于任意点,当且仅当与这个点相连的所有操作过的边的相对顺序都相同,这两次操作得到的 a 是一样的。
证明:考虑归纳法。如果操作仅有一条边或者没有操作显然成立。考虑新增一个边 (u,v),这条边与不和 u,v 两点相连的边的出现顺序对答案没有影响,与 u,v 两点相连的边出现顺序一定有影响,得证。

根据上面的引理,假设与 u 相连的点有 degu 被操作,那么答案就是 (degu!)
gu,0/1u 这个子树与父亲相连的边没有操作/操作的方案数。
对于每次转移设 fi,ji 这个子树目前 j 个儿子向它连边的方案数。
使用 O(n2) 树形 DP 即可。答案显然是 groot,0
https://atcoder.jp/contests/arc171/tasks/arc171_c

D

link
注意到 P 是质数,所以 hash(Al,Al+1,,Ar)0 等价于 hash(Al,Al+1,,An)hash(Ar+1,Ar+2,,An)
每个后缀看成一个点,要求不相同的两两连边,就变成 N+1 个点(注意空后缀)染 P 种颜色要求每条边相邻的点颜色不同。
状压,先算出每个点集是不是独立集,为了方便记 g(S)=[点集S是独立集]f(S)} 为给集合 S 的元素染色需要最少的颜色数量。显然 f()=0

f(S)=ming(T)=1,TS{f(ST)+1}

O(3n)
https://atcoder.jp/contests/arc171/submissions/50404418

E

link
考虑观察样例研究一下这个性质。

注意到每次一定是横着跳竖着条循环往复然后回到原来的位置。所以 M 为奇数无解。
发现横着或者竖着跳不会互相影响,所以分开考虑最后乘起来再 ×2 就是答案(第一次可以横着也可以竖着)。
考虑横着跳。
发现每次横着跳都会占用两个相邻的列。
由于起点是给定的,如果最后是从左边过来,那么起点应该在两个相邻的列中的左边,否则是右边。
我们注意到只有最后一次并不是任意选的。我们设最后一次可以从 i 个位置过来,那么如果圈定了列之后,总共有 (m/22)!×i 种方案。
考虑确定这 2m 列。除了起点所在的两个列需要分类讨论,其余的直接用捆绑法计算即可。
https://atcoder.jp/contests/arc171/submissions/50409834

posted @   jiangtaizhe001  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示