做题记录 26.3.20
\(\textcolor{purple}\odot\) P8292 [省选联考 2022] 卡牌
令 \(V=2000\),可知 \(\le V\) 的质数数量为 \(303=\pi(V)=(1+o(1))\times \frac V{\ln V}\),记为 \(L_1\)
令 \(S=\lfloor\sqrt V\rfloor=44\),则 \(\le S\) 的质数数量为 \(14=\pi(S)=(2+o(1))\times \frac {\sqrt V}{\ln V}\),记为 \(L_0\)
称这 \(L_0\) 个为关键质数,\(S+1\sim V\) 中质数为普通质数,两者合称为全体质数
一组询问给出一系列质数,为全体质数的一个子集,\(a_{1\sim n}\) 中每个数也对应全体质数的一个子集,等价于查询有多少 \(a_{1\sim n}\) 的子集使得它们对应子集的并为题目给出的子集的超集
显然一个 \(a_i\) 包含至多一个普通质数,由此将所有 \(a\) 划分为 \(L_1-L_0+1\) 个等价类,设 \(a_i\) 对应关键质数的子集为 \(F_i\),对应等价类为 \(id_i\),预处理部分容易做到 \(O(V+n\sqrt V)\)
一次询问中给定的质数也分为关键的 \(S\) 和普通的 \(T\),对于所有等价类,若不在 \(T\) 中则选择任意,若在 \(T\) 中则至少选择一个,要求选出的所有 \(F\) 之并为 \(S\) 的超集
对于每个等价类预处理 \(c_S\) 表示 \(F\subseteq S\) 的数量,容易高维前缀和做到 \(O(L_1\times L_02^{L_0})\)
则一次询问 \((S,T)\) 中,选出的 \(F\) 之并为 \(S'\) 的子集的方案数为
其中 \(G\) 表示等价类的集合
对得到的数组做 \(\text{FWT}\),则可以得到每种选出的 \(F\) 之并对应的方案,从而可以统计答案
这部分暴力实现为 \(O(q(L_12^{L_0}+L_02^{L_0}))\) 的,后面部分勉强可以接受,考虑优化前面部分
实际上 \(g\in G\) 的部分比较稀疏,对于连续一段 \(g\notin G\) 的部分,等价于若干 \(2\) 的幂相乘,因此可以预处理 \(c\) 的前缀和,从而做到 \(O(q(|T|2^{L_0}+L_02^{L_0}))\)
总时间复杂度 \(O(V+n\sqrt V+(\pi(V) \pi(\sqrt V)+\sum c+q\pi(\sqrt V))2^{\pi(\sqrt V)})\),其中 \(c\) 为询问中给出的质数数量,需要一定的卡常
\(\textcolor{blue}\odot\) P3082 [USACO13MAR] Necklace G
令 \(f_{i,j}\) 表示 \(s_{1\sim i}\) 的后缀匹配 \(t\) 前缀的最大长度为 \(j\) 时最少需要删去的字符数量,容易做到 \(O(nm)\)
\(\textcolor{purple}\odot\) CF17E Palisection
通过马拉车对每个终点预处理最大回文串,得到集合 \(S\),其中每个 \([l,r]\in S\) 对应一组回文串
题目要求相交的对数,容易转化为求不相交的对数,预处理 \(cl_i\) 和 \(cr_i\) 表示以 \(i\) 为左右端点的回文串数量(每个 \([l,r]\in S\) 对 \(cl\) 和 \(cr\) 的贡献为区间加),则不相交的总对数为 \(\sum_{r<l} cr_r\times cl_l\)
容易做到 \(O(n)\)
\(\textcolor{blue}\odot\) CF2180F1 Control Car (Easy Version)
令 \(f_{i,j,0/1,0/1}\) 表示目前在 \((i,j)\),要走到 \((n,m)\),上一步从上方/左侧过来,第三个参数为 \(0\) 表示左侧,此时第四个参数表示 \((i,j)\) 的右上角是否向下(\(0\) 表示是,下同); \(1\) 表示右侧,此时第四个参数表示 \((i,j)\) 的左下角是否向左;这种情况下可以到达的概率
显然 \(f_{i,j}\) 从 \(f_{i+1,j}\) 和 \(f_{i,j+1}\) 转移而来,容易 \(O(nm)\) 预处理
总时间复杂度 \(O(nm+t)\)
NFLS #P13074. 渐变项链
枚举 \(c_1\),双线反射容斥,化简后可以得到 \((n,m)\) 的答案为
当 \(m\ge \sqrt n\) 时直接算,当 \(m<\sqrt n\) 时,令 \(f_{i,j}=\sum_{k\equiv j\pmod {(m+1)}}\binom ij\),可以做到 \(O(nm)\)
总时间复杂度 \(O(n\sqrt n)\)
\(\textcolor{blue}\odot\) CF2159D1 Inverse Minimum Partition (Easy Version)
每个右端点在区间权值 \(\le 2\) 的情况下尽量向前,显然至多 \(\log_2(V)\) 段,从而答案上限为 \(O(\log_2(V))\) 的,可以对每个答案求出最大右端点
时间复杂度 \(O(\sum (n\log V+n\log n))\)

浙公网安备 33010602011771号