做题记录 26.4.6
\(\textcolor{purple}\odot\) AT_agc026_e [AGC026E] Synchronized Subsequence
令 \(dp_i\) 表示第 \(i\sim n\) 对 \(\text{ab}\) 构成字符串的答案,从后往前 \(dp\),则答案为 \(dp_1\)
若删去第 \(i\) 对,则 \(dp_i\gets dp_{i+1}\)
若保留,且第 \(i\) 对 \(\text a\) 在 \(\text b\) 之前,则为了保证字典序最大,需要删去两者之间所有的 \(\text{a}\),而显然两者之间所有的 \(\text b\) 编号都 \(<i\) 需要忽略,因此 \(dp_i\gets \text{ab}+dp_k\),其中 \(k\) 为最小的完全在第 \(i\) 对 \(\text{ab}\) 之后的 \(\text{ab}\) 的编号
若第 \(i\) 对 \(\text b\) 在 \(\text a\) 之前,则需要保留它们之间所有 \(\text b\),而它们对应的范围中又会包含更多 \(\text b\),因此不断向后扫(需要忽略其中编号 \(<i\) 的),\(dp_i\gets S+dp_k\),\(S\) 表示扫到的部分,\(k\) 表示这部分之后第一对 \(\text{ab}\) 的编号
时间复杂度 \(O(n^2)\)
\(\textcolor{blue}\odot\) P13653 [CERC 2020] Pizzo Collectors
先分解 \(n=p^r\)
对于整个序列,按下标 \(\bmod p\) 划分为 \(p\) 个子类,每个子类之间独立
若整个序列相同,容易计算答案,否则答案为每个子序列的答案之和
递归处理即可
时间复杂度 \(O(nr)\)
GYM104713H Pickpockets
求出横向划分后所有段长的集合,若大小超过 \(t\) 则无解
之后需要将 \(t\) 个元素划分为若干子集(允许忽略一部分),使得这些子集长度总和分别对应这些段的长度,且最大化子集的权值和
容易做到 \(O(n+t3^t)\) 或 \(O(n+t^22^t)\)
GYM104666L The Bugs
即求出可能的大小关系,分别讨论一下即可
时间复杂度 \(O(n\log n)\)
GYM104713K Screamers
一个区间合法当且仅当区间内边不存在环,容易用 \(\text{LCT}\) 对每个左端点求出最大合法右端点
每个询问容易做到 \(O(\log n)\)
总时间复杂度 \(O((n+q)\log n)\)
\(\textcolor{purple}\odot\) AT_agc027_d [AGC027D] Modulo Matrix
黑白染色,黑色部分每条主对角线和副对角线各自分配一个不同的质数,每个黑色位置取两条线的质数乘积,白色部分取周围若干黑色格子的 \(\text{lcm}\) 加一
特判 \(n=2\)
显然只需要前 \(2n=1000\) 个质数,都在 \(10^4\) 以内,且每个白色格子为四个质数的乘积加一,至多在 \(10^{16}\) 级别,且这个上界比较宽松,可以过
\(\textcolor{purple}\odot\) AT_agc028_b [AGC028B] Removing Blocks
枚举每个区间,考虑其贡献,\(l=1\) 或 \(r=n\) 的与中间的分别计算,可以用任意模数多项式乘法做到 \(O(n\log n)\)
更好的方法:
令 \(d_i\) 表示点 \(i\) 在笛卡尔树(以每个点被删的时间序列建树)上的期望深度,则答案为 \(\sum d_i a_i\times n!\)
令 \(s_i=\sum_{j=1}^i \frac 1j\),可证 \(d_i=s_i+s_{n-i+1}-1\)
容易做到 \(O(n)\)
\(\textcolor{purple}\odot\) CF309E Sheep
二分答案,设目前二分的距离为 \(M\)
从左往右尝试确定每个位置选择的区间,令 \(vs_i\) 表示第 \(i\) 个区间是否已经填上,\(lm_i\) 表示目前第 \(i\) 个区间可以填的最靠右的位置,初始 \(lm_i=n\)
之后依次枚举位置 \(i\),令 \(c_j\) 表示 \(lm\le j\) 且还没有使用的数量
若存在 \(c_j>j-i+1\),根据 \(\text{hall}\) 定理必然无解
否则选择最小的满足 \(c_j=j-i+1\),显然一定存在,在对应的 \(c\) 中选择 \(r\) 最小的,将它填到 \(i\),并跟新 \(lm\) 即可
时间复杂度 \(O(n^2\log V)\)

浙公网安备 33010602011771号