专栏文章

题解:P11362 [NOIP2024] 遗失的赋值

P11362题解参与者 24已保存评论 24

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
24 条
当前快照
1 份
快照标识符
@miqxuyh0
此快照首次捕获于
2025/12/04 12:31
3 个月前
此快照最后确认于
2025/12/04 12:31
3 个月前
查看原文

前言

赛时 T1 唐太久(Only get 40pts),切 T2 的时候人都傻了,看来开赛先看一遍题目是有道理的。
别看这篇题解长,如果仔细读下来,你会发现这题其实还是挺简单的。

思路

当一元约束之间有冲突的时候,答案很明显是 00
考虑一元约束什么时候会与二元约束产生冲突:当且仅当有一对 i,ji,j,满足:
  • 1i<jn1\le i<j\le n
  • xi,xjx_i,x_j 已知(即在 xi,xjx_i,x_j 上有一元约束)
  • ai=xi,ai+1=bi,ai+2=bi+1,,aj1=bj2,bj1xja_i=x_i,a_{i+1}=b_i,a_{i+2}=b_{i+1},\dots,a_{j-1}=b_{j-2},b_{j-1}\not=x_j
因为只有这样,才能使 xi,xi+1,,xj1x_i,x_{i+1},\dots,x_{j-1} 的值都固定,并在 xjx_j 上产生冲突。
考虑到此时我们是让 xjx_j 产生冲突,与 ii 是多少没有关系,为了统计的不重不漏,不妨将所有一元约束按位置排序后,使 i=cp,j=cp+1(1p<m)i=c_p,j=c_{p+1}(1\le p<m)。特别地,当 m=1m=1 时,约束条件可以任取,由于 ai,bi[1,v]a_i,b_i\in [1,v],则答案即为 v2×(n1)v^{2\times (n-1)}
接下来,计算约束条件在 xix_ixjx_j(即 ai,bia_i,b_iaj1,bj1a_{j-1},b_{j-1})上的合法方案数,再将它们连乘,即为总的合法方案数(其实还要考虑 11c1c_1cmc_mnn 的冗余)。但直接计算合法方案数是困难的。正难则反,考虑计算所有方案数减去不合法的方案数。
由于 ai,bi[1,v]a_i,b_i\in [1,v],所有方案数即为 v2×(ji)v^{2\times(j-i)}。而对于不合法方案数,因为要满足上述条件,所以 aia_i 只有一种选择,而对于 p[i,j2]p\in[i,j-2]bpb_pvv 种选择,ap+1a_{p+1}11 种选择(能且只能等于 bpb_p)。最后,bj1b_{j-1}v1v-1 种选择(不能等于 xjx_j)。综上,不合法方案数为 vji1×(v1)v^{j-i-1}\times (v-1),则合法方案数即为:
v2×(ji)vji1×(v1)v^{2\times(j-i)}-v^{j-i-1}\times (v-1)
由于最后的答案要连乘,则最后的答案为(数组 cc 为升序排列):
Πi=2m(v2×(cici1)vcici11×(v1))\Pi_{i=2}^m (v^{2\times(c_i-c_{i-1})}-v^{c_{i}-c_{i-1}-1}\times (v-1))
吗?
正如前文所说,还要考虑 11c1c_1cmc_mnn 的冗余,即约束 a1,b1a_1,b_1ac11,bc11a_{c_1-1},b_{c_1-1}acm,bcma_{c_m},b_{c_m}an1,bn1a_{n-1},b_{n-1} 的冗余。因为这一部分的 aa 数组和 bb 数组取 [1,v][1,v] 的任意一个数都没有问题,所以答案还要乘上 v2×(c11+ncm)v^{2\times (c_1-1+n-c_m)}
则,最终答案为:
v2×(c11+ncm)×Πi=2m(v2×(cici1)vcici11×(v1))v^{2\times (c_1-1+n-c_m)}\times \Pi_{i=2}^m (v^{2\times(c_i-c_{i-1})}-v^{c_{i}-c_{i-1}-1}\times (v-1))
代码实现是简单的,将 cc 排序后使用快速幂计算并取模即可,记得最后把负数转成正数。

后记

个人认为这题是一道比较好的数学计数题,虽然放 T2 确实有点搞心态。
其实完全可以把数组 dd 去掉,然后加上点奇奇怪怪的题目描述让这道题看起来很难(
因为是在回来的动车上用手机写的题解,数学公式难免有疏漏之处,若有请指出。
祝大家 NOIP2024 后的下一个赛程 rp++。

评论

24 条评论,欢迎与作者交流。

正在加载评论...