2025.6.19 NOI 模拟赛 题解
T1 宝石(stones) \(\quad\) CF264D Colorful Stones
题意
给定字符串 \(s,t\),对于状态 \((i,j)\),定义变换 \(f\),满足 \(f_K((i,j))=(i+[s_i=K],j+[t_j=K])\),其中 \(s_i,t_i,K\in\{\text R,\text G,\text B\}\),\(s\) 下标为 \(1\sim n\),\(t\) 下标为 \(1\sim m\),求出从 \((1,1)\) 开始经过若干次变换所能得到的状态的集合(状态中下标不能超出 \(1\sim n\) 和 \(1\sim m\)),\(n,m\le10^6\)
分析
建立一张 \(n\times m\) 个点的图,每个点表示一个状态,连有向边表示状态之间的可达性
以以下数据为例:
AABCB
BACBA
用 \(\textcolor{blue}{\circ}\) 标出了可达点,发现都分布在两条红色线围成的图形中,一条为从 \((1,1)\) 开始优先向上走,一条为优先向右走,扫描 \(t\) 的过程中容易双指针维护图形当前截面,从而求出围出图形内总点数,减去其中不可达点即可得到
可证 \((i,j)\) 不可达当且仅当 \((s_{i-1},s_i)=(t_j,t_{j-1})\),对于每个 \(i\) 预处理每个前缀中 \((a,b)\mid a,b\in\{\text R,\text G,\text B\},a\ne b\) 的数量,扫描 \(t\) 的同时减去当前截面中对应的数量
时间复杂度 \(O(n+m)\)
T2 数(puppy)
题意
给定 \(n,k,d,mod\),求出 \(\sum_{i=0}^n\binom ni[i\equiv d\pmod k]\),多测,\(n\le10^9\),\(k\le30,t\le10^3,mod=10^9+7\),或 \(k\le500,t\le10,mod=10^9+7\),或 \(k\le10^3,t\le10^3,mod=100005001\)
分析
答案为
对于 \(mod=10^9+7\) 的部分,显然上式等于
朴素快速幂,暴力卷积,可做到 \(O(tk^2\log n)\),用任意模数卷积可以做到 \(O(tk\log k\log n)\)
对于 \(mod=100005001\) 的部分,考虑单位根反演
直接计算时间复杂度为 \(O(tk\log n)\)
T3 异或图(graph) \(\quad\) P10104 [GDKOI2023 提高组] 异或图
比赛结果
\(30+70+20\),\(\text{rk}9\)

浙公网安备 33010602011771号