做题记录 25.6.23

\(\textcolor{purple}\odot\) CF1728G Illumination

\(p\) 排序

\(pr_{i,j}\) 表示位置 \(0\sim i\) 中最小的未覆盖关键点为 \(p_j\) 的方案数,\(sf_{i,j}\) 表示位置 \(i\sim d\) 中最大的未覆盖关键点为 \(p_j\) 的方案数

对于询问 \(f\),答案为 \(\sum_{l,r} pr_{f-1,l}sf_{f+1,r}(d+1-[l\le r]\max(f-p_l,p_r-f))\)

\(pr\)\(sf\) 计算方式类似,以 \(pr\) 为例,显然 \(pr_{0,1}=1\),若 \(i\) 位置不存在灯则 \(pr_{i,j}=pr_{i-1,j}\),否则

\[pr_{i,m+1}\gets pr_{i,m+1}(d+1)\\ pr_{i,j}\gets pr_{i-1,j}|p_j-i|\\ \forall k>j,pr_{i,k}\gets pr_{i-1,j}(r-l+1),l=\max(i-p_j,p_{k-1}-i),r=\begin{cases}p_k-i-1&k\le m\\d&k=m+1\end{cases} \]

总时间复杂度 \(O((n+q)m^2+dm)\)

代码

参考

\(\textcolor{blue}\odot\) CF1728E Red-Black Pepper

预处理 \(f_i\) 表示选择 \(i\) 个红色的最大权值,\(f_0=\sum_i b_i\),令 \(v_i\gets a_i-b_i\),将 \(v\) 从大到小排序后 \(f_i=v_i+f_{i-1}\)

对于一次询问 \(x,y\),求出 \(ax+by=n\) 的通解 \(a=a_0+kd\),则 \(ax\) 取值范围为一个等差数列,当公差 \(>\sqrt n\) 时暴力,小于时预处理,时间复杂度 \(O(n\sqrt n+m\sqrt n)\)

代码

参考

\(\textcolor{purple}\odot\) CF1726E Almost Perfect

在置换环上,对于三个位置 \(u\to v\to w\),令 \(p\gets p^{-1}\) 后变为 \(u\gets v\gets w\),此时要求 \(|u-w|\le 1\)

即排列合法等价于每个置换环上任意两个相距可以为 \(2\)(即其中一个走两次可以到达另一个)的点的值相差不超过 \(1\)

显然大小为 \(1\)\(2\) 的环必然合法,令 \(f_i\) 表示 \(i\) 个有标号点分为互不区分的一元环或二元环的方案数,则 \(f_i=f_{i-1}+(i-1)f_{i-2}\)

大小 \(=3\)\(\ge 5\) 的奇环根据距离为 \(2\) 重排,要求任意一对相邻的相差 \(\le 1\),且环长 \(\ge 3\),任取连续三个发现无解,对于大小 \(\ge 6\) 的偶环同理(分解为两个)

因此只需要考虑四元环,此时要求相对的位置值相差 \(1\),即在值域上选择两对相邻的

枚举有 \(t\) 个四元环,选择 \(t\) 个两对相邻的数方案数为 \(\binom{n-2t}{2t}\),这 \(2t\) 对组合为 \(t\) 组的方案数为 \((2t-1)!!\)(双阶乘),每个四元环有两种定向,系数为 \(2^t\),剩余 \(n-4t\) 个点的贡献为 \(f_{n-4t}\),总贡献为 \(\binom{n-2t}{2t}2^tf_{n-4t}(2t-1)!!\)

时间复杂度 \(O(\sum n)\)

代码

参考

\(\textcolor{purple}\odot\) CF1725K Kingdom of Criticism

先忽略单点修改,则建立并查集,用 set 保存目前存在的值,unordered_map 保存目前存在的值到对应集合代表元的映射,查询操作直接在并查集上跳即可,修改操作则在 set 中二分出范围,分别把代表元并起来,显然这样时间复杂度为单 \(\log\)

然后考虑加入单点修改,在以上的基础上在位置和之间增加一重映射,每个值建立一个点,位置的点指向值的点,每次区间操作合并后从 set 中删去 \([l,r]\) 中的值,下次出现单点赋为这一值时新建对应值的点

时间复杂度 \(O((n+q)\log (n+q))\)

代码

参考

posted @ 2025-06-24 17:43  Hstry  阅读(6)  评论(0)    收藏  举报