『杂题』做题记录1
(题意不解释了,太麻烦
CF388B
构造好题。
考虑经典套路,我们二进制拆开 $k$ ,然后构造辅助图,满足其中任意点
走出最短路为 $2^i$ 考虑辅助图中有两点向另外两点分边连出 $2$ 条边。
显然当两点走出方案数为 $2^i$ 时,另外两点走出方案数为 $2^{i+1}$ 。
构造总边数为 $O(\log n)$ 。
CF388C
有这样一个显然的事实是: 对于容易取到的那一半,两人显然会取走。
偶数堆显然不用考虑,对于奇数堆,将最中间点单独考虑,最后从大到小先后手轮流取。
CF1073E
通过观察数据范围,可以显然看出这是一道数位 $dp$ 。
考虑普通数位 $dp$ 可能无法判断合法,考虑状压。
设: $f_{i,s}$ 表示第 $i$ 位出现数集 $s$ 在没限制情况下的前 $i$ 位数和,
$g_{i,s}$ 表示第 $i$ 位出现数集 $s$ 在没限制情况下的方案数。
转移方程可显然写出: $f_{i,s|j} = \sum f_{i-1,s}+10^{i} \times j \times g_{i-1,s}$ 。
$g_{i,s|j} = \sum g_{i-1,s}$ 。
CF1609E
一眼 $\text{DS}$ 。
考虑用线段树维护,对于一个区间,维护 $6$ 个信息。
$a,b,c,ab,bc,abc$ ,分别表示区间内,不出现 $a$ , $b$ , $c$ , $ab$ , $bc$ , $abc$ 至少需要删几个字符。
转移很好写,这里就不提了。
SP1609E
推一发柿子:
$$\sum_{i=1}^{n} \sum_{i=1}^{m} i\times j \times \mu(\gcd(i,j)) \times \gcd(i,j)$$
$$=\sum_{T=1}^{n} T^{3} \mu(T) \sum_{i=1}^{\lfloor\frac{n}{T}\rfloor} \sum_{i=1}^{\lfloor\frac{m}{T}\rfloor} i\times j$$
$$=\sum_{T=1}^{n} T^{3} \mu(T) \sum_{i=1}^{\lfloor\frac{n}{T}\rfloor} \sum_{i=1}^{\lfloor\frac{m}{T}\rfloor} i\times j [\gcd(i,j)=1]$$
$$=\sum_{T=1}^{n} T^{3} \mu(T) \sum_{i=1}^{\lfloor\frac{n}{T}\rfloor} \sum_{i=1}^{\lfloor\frac{m}{T}\rfloor} i\times j \sum_{k|i,k|j} \mu(k)$$
$$=\sum_{T=1}^{n} T^{3} \mu(T)\sum_{k=1}^{\lfloor\frac{n}{T}\rfloor}\mu(k) \sum_{k|i} i \sum_{k|j} j $$
$$=\sum_{T=1}^{n} T^{3} \mu(T)\sum_{k=1}^{\lfloor\frac{n}{T}\rfloor}\mu(k)k^{2} \sum_{i=1}^{\lfloor\frac{n}{kT}\rfloor} i \sum_{j=1}^{\lfloor\frac{n}{kT}\rfloor} j $$
设 $S(n)=\sum_{i=1}^{n} i$ 。
$$\sum_{T=1}^{n} T^{3} \mu(T)\sum_{k=1}^{\lfloor\frac{n}{T}\rfloor}\mu(k)k^{2} S\left(\lfloor\frac{n}{kT}\rfloor\right) \times S\left(\lfloor\frac{m}{kT}\rfloor\right)$$
设: $d=kT$ 。
$$\sum_{d=1}^{n} \sum_{T|d}T^{3}\mu(T)\mu\left(\dfrac{d}{T}\right)\times \left(\dfrac{d}{T}\right)^{2}\times S\left(\lfloor\frac{n}{d}\rfloor\right) \times S\left(\lfloor\frac{m}{d}\rfloor\right)$$
$$=\sum_{d=1}^{n} d^2\times S\left(\lfloor\frac{n}{d}\rfloor\right) \times S\left(\lfloor\frac{m}{d}\rfloor\right) \sum_{T|d}T\mu(T)\mu\left(\dfrac{d}{T}\right)$$
设: $f(n)=\sum_{T|n}T\mu(T)\mu\left(\dfrac{n}{T}\right) $
答案即为:
$$\sum_{d=1}^{n} f(d)d^2S\left(\lfloor\frac{n}{d}\rfloor\right) S\left(\lfloor\frac{m}{d}\rfloor\right)$$
预处理 $g(n)=\sum_{i=1}^{n} f(i)i^2$ ,然后答案整除分块即可。
复杂度 $O(n\log {n} +T \sqrt{n})$ 。
发现 $\log n$ 不好看, $f(n)$ 显然是积性的,线性筛中 $O(n)$ 做。
复杂度 $O(n +T \sqrt{n})$ 。
P5024
求树上最小权覆盖集,单点修改。
对于图上最小权覆盖集是个 $\text{NP}$ 困难性问题。
但是树上有个性质:最小权覆盖集等于全集减去最大权独立集。
然后就是动态 $dp$ 板子题了。
CF1149E
图上 $\text{nim}$ 。
对于这个 $\text{DAG}$ 考虑使用类似题目套路 。
考虑分层,对于一个节点属于第 $i$ 层当且仅当 它向 $0,1,2,3,\dots,n-1$ 层点连边,且没有向第 $i$ 层点连边。
特别的,我们设出度为 $0$ 的点属于第 $0$ 层。
然后很显然的性质是:考虑求出每层异或和 $p_i$ ,先手必胜当且仅当存在 $p_i\not=0$ 。
因为此时,先手只需找到最大 $i$ ,满足 $p_i\not=0$ ,对于这层我们可随便选点修改,根据 $\text{nim}$ 套路,我们可将其修改为 $p_i=0$ 。
由于连向 $0,1,2,3,\dots,n-1$ 层点,又没有修改限制,则显然可将 $p$ 全部改为 $0$ ,对于后手这显然是必败态。
然后这题就只需拓扑排序,分层即可。
AT3617
$prufer$ 序好题。
板子题求的是给定度数,求树本质不同个数。而这题是个基环树。
同理可用 $prufer$ 序求解。但环不好处理,考虑单独判环。
我们考虑 $prufer$ 序求解过程,最后会剩下 $2$ 个数。
显然求解 $prufer$ 时不会删除环,且环周围会留下一个点。
考虑分别求解 $prufer$ 方案数和环的方案数,显然环在翻转旋转下,本质不同个数为 $\dfrac{(x-1)!}{2}$ 。
然后最后的环上一点与一点相连的,在 $prufer$ 序中出现 $deg_u-3$ 次。
其余则是 $deg_u-2$ 次。而环外点则是 $deg_u-1$ 次。
考虑 $dp$ ,设 $f_{i,j,0/1}$ 表示考虑前 $i$ 个点, $j$ 个点在环上,是否出现特殊点的方案数。
注意最后乘上环的方案。
CF148E
显然分组背包。
考虑以每个柜子为一组,设 $g_{i,j}$ 表示第 $i$ 组选 $j$ 个数的最大值,设 $sum_{i,l}=\sum_{j=1}^{l} v_{i,j}$ 。
转移显然是 $g_{i,j}=\max_{l=1}^{j}(sum_{i,l}+sum_{i,k_i}-sum_{i,k_i-j+l})$ 。
对于答案,考虑设计状态: $f_{i,j}$ 表示前 $i$ 组选 $j$ 个数的最大值之和。
可写出转移式: $f_{i,j}=\max_{d=1}^{k_i}(f_{i-1,j-d}+g_{i,d})$ 。
P7459
题意过于复杂,在此转化题意:
给定 $vf,vd,tf,td,hf,hd \in [0,+\infty)$ ,求满足最小的 $t \in [0,+\infty)$ 使得以下(不)等式成立:
$\begin{cases}x=vf \times t\\y=hf-\dfrac{1}{2}t^2\\t \geq \dfrac{\sqrt{6\times hd}-\sqrt{6\times hd-6\times y}}{3}\\x\leq vd \times (t-td)\\y\leq hd\end{cases}$
考虑二分。
对于 $y$ 发现他是关于 $t$ 递增的函数,第 $3$ 个式子右边是关于 $t$ 单调递减的,最后两个限制当作二分左边界。
然后就做完了。
CF1307D
首先我们可在原图上 $bfs$ 得出 $1$ 到其他点的最短路, $n$ 到其他点的最短路,分别记为 $dis_{1,i},dis_{i,n}$。
首先要明确求什么: $\min (dis_{1,n},\max_{i,j \in[1,n],i\not =j} (min(dis_{1,i}+dis_{j,n},dis_{1,j}+dis_{i,n})+1))$ 。
考虑贪心,将 $dis_{1,i},dis_{i,n}$ 按照 $dis_{1,j}$ 对应值升序排序。
首先发现当 $j<i$ 时,有 $dis_{1,i}+dis_{j,n} \geq dis_{1,j}+dis_{j,n} \geq dis_{1,n}$ ,于是 $dis_{1,i}+dis_{j,n}$ 对答案没贡献。
所以对于答案简化为 $\min (dis_{1,n},\max_{i,j \in[1,n],i<j} (dis_{1,i}+dis_{j,n}+1))$ 。
我们继续考虑贪心。
考虑是否存在 $k$ 满足: $dis_{k,n} \leq dis_{k+1,n}$ 。
如果存在,由 $dis_{1,i}+dis_{i+1,n} \geq dis_{1,i}+dis_{i,n} \geq dis_{1,n}$ ,那最后答案必定是 $dis_{1,n}$ 。
如果不存在,那 $dis_{i,n}$ 必定降序,那显然的对于 $j>i+1$ ,有 $dis_{1,i}+dis_{i+1,n} \geq dis_{1,i}+dis_{j,n}$ 。
综上所述,对于 $\forall dis_{1,i}$ ,只需求解 $dis_{1,i}+dis{1,i+1}+1$ 即可。
复杂度 $O(n)$ ,对于排序可用基数排序。
CF1592D
首先我们知道答案一定是最大的边权,因为 $\gcd$ 只减不增。
对于点集查询我们需要使点集连通,我们考虑在欧拉序上二分。
复杂度 $O(n \log^2 n)$ ,查询次数 $1+\log (2n-1)$。
P8445
赛时鬼畜思路。
我们看到式子极丑无比,特别是那个 $\text{mex}$ ,老套路,枚举一发 $\text{mex}$ 。
设之为 $u$ ,我们发现 $u$ 作为区间 $\text{mex}$ 的充要条件是:区间不存在 $u$ ,且存在 $[1,u-1]$ 。
对于后面的限制,感觉非常难搞,但我们显然可以去掉这个限制,当存在 $k\in[1,u-1]$ ,且区间不存在 $k$ 时,显然 $k$ 作为 $\text{mex}$ 更优。
然后考虑怎么计算答案,我们发现 $a_i \not= b_i$ 时是没有贡献的,那只需考虑 对于值 $u$ 的最大区间满足 $a_i\not= b_i$ 或 $a_i= b_i\not=u$ 。
这显然可以预处理 $a_i=b_i=u$ 的所有位置,然后相邻位置差减 $1$ 取 $\text{max}$ 即为所求。
复杂度 $O(n)$ 。
P8446
转化一下式子,我们发现两端点不是区间极值时必劣:
原式即为: $|a_r-a_l|-(r-l+1)$ 。
讨论。
$a_r-a_l-r-l+1=(a_r-r)-(a_l-l)+1$ 与 $-a_r+a_l-r-l+1=-(a_r+r)+(a_l+l)+1$ ,的最大值即为答案。
显然两式子都可 $O(n)$ 。
CF715B
我们发现,对于所有修改操作,可看成将边权为 $0$ 的点增加若干次 $1$ 。
然而对于任意加 $1$ 操作,最短路至多 加 $1$ 。
那么这时我们可以二分操作序列,对于这操作序列,有极值差不大于 $1$ ,这样不但保证算法准确性,又可以更为简单得二分。
每次 $check$ 直接上 $dijkstra$ 。
最后复杂度为 $O(n \log m \log V)$ ,其中 $V=mL$ 。
P4548
$PGF$ 。
我们钦定 $F(x)$ 是某事件的概率生成函数。
$F(x)=\sum_{i=1}^{n} Pr(X=a_i)x^i$
我们有 $E(x)=\sum_{i=1}^{n} iPr(X=a_i)x^i=xF^{\prime} (x)$ , $E(1)=F^{\prime} (1)$ 。
以及一个小性质 : $F(1)=1$ 。
设 $f_i$ 表示长度到 $i$ 结束的概率,$g_i$ 表示长度到 $i$ 没结束的概率。
显然 $g_{i}=g_{i+1}+f_{i+1}$ ,对于他们的 $PGF$ : $F(x)+G(x)=xG(x)+1$ 。
我们定义 $k_i$ 表示第 $[1,i]$ 是否为 $A$ 的 $\text{border}$ 。
对于我们填了若干字符后,考虑直接填上期望的字符,有:
$G(x) \times (\dfrac{1}{m})^S=\sum_{i=1}^{S} a_i F(x)(\dfrac{1}{m})^{S-i}$ 。
对 $F(x)+G(x)=xG(x)+1$ 求导。
$F^{\prime} (x)+G^{\prime}(x)=G(x)+xG^{\prime}(x)$ 。
$F^{\prime} (1)=G(1)=E(1)$ 。
对于 $G(x) \times (\dfrac{1}{m})^S=\sum_{i=1}^{S} a_i F(x)(\dfrac{1}{m})^{S-i}$ 。
当 $x=1$ :
$G(1) \times (\dfrac{1}{m})^S=\sum_{i=1}^{S} a_i F(1)(\dfrac{1}{m})^{S-i}$ 。
而 $F(1)=1$ 。
$E(1)=G(1)=\sum_{i=1}^{S} a_i(\dfrac{1}{m})^{i}$ 。
然后做完了,复杂度 $O(S)$ 。
AT4546
发现障碍物很少,果断容斥。
考虑转移,我们对障碍物按照 $x$ 排序,相等则按 $y$ :
$f_i=C_{x_i+y_i}^{x_i} -\sum_{j=1}^{n-1}[x_j \leq x_i \ \text{and} \ y_j \leq y_i]f_j \times C_{x_i+y_i-x_j-y_j}^{x_i-x_j}$ 。
答案即为 $f_{n+1}$ ,复杂度 $O(n^2)$ 。
感觉这夏令营没水啥题,我要没了)
SP22412
CF685B
CF348D
我们考虑将起点,终点分别分成两个,使问题等价、简洁。
我们不难发现对于第一部操作,一定是走到 $(1,2)$ 或 $(2,1)$ 。
对于终点,一定是走到 $(n-1,m)$ 或 $(n,m-1)$ 。
于是问题转化成为了 $(1,2)$ 或 $(2,1)$ 走到 $(n-1,m)$ 或 $(n,m-1)$ 不相交路径个数。
但是,对于$(1,2)$ 走到 $(n,m-1)$ 与 $(2,1)$ 走到 $(n-1,m)$ 必定相交。
故起点终点一一对应,此时便想到 $\text{LGV}$ 引理。
对于答案,我们分别算出 $\omega (P_1),\omega (P_2),\omega (P_3),\omega (P_4)$ 。
分别表示为 $(1,2)$ 走到 $(n-1,m)$ 的方案数,$(2,1)$ 走到 $(n,m-1)$ 的方案数, $(1,2)$ 走到 $(n,m-1)$ 的方案数,$(2,1)$ 走到 $(n-1,m)$ 的方案数。
答案即为 $\omega (P_1)\times \omega (P_2)-\omega (P_3)\times \omega (P_4)$ 。
对于 $\omega$ ,我们可以用 $dp$ 求解,设 $f_{i,j}$ 表示从 $(1,2)$ 到 $(i,j)$ 的方案数,$g_{i,j}$ 表示从 $(2,1)$ 到 $(i,j)$ 的方案数。
转移只写 $f$ , $g$ 同类:
$$f_{i,j}=f_{i-1,j}[c_{i,j-1}='.']+f_{i,j-1}[c_{i,j-1}='.']$$
复杂度 $O(n^2)$ 。
CF510D
考虑设计一些看上去优化不了的 $dp$ 。
$f_{i,j}$ 表示考虑前 $i$ 张卡, $\gcd$ 为 $j$ ,显然有:
$f_{i,gcd(j,l_i)}=min(f_{i-1,j}+c_i)$
$f_{i,l_I}=min(f_{i-1,l_i},c_i)$
显然值域这么大不可能全部转移,但是发现状态数很少,对于一个数不同质因数之多只有 $9$ 个。
于是考虑用 $map$ 来转移。
复杂度 $O(n \log n 2^{9})$ 。
CF1117G
考虑把答案形式化: 设 $L_i$ 表示 $i$ 左边第一个大于 $a_i$ 的位置, $R_i$ 表示 $i$ 右边第一个大于 $a_i$ 的位置。
对于 $[l_I,r_i]$ 答案即为 $\sum_{j=l_i}^{r_i} \text{min} (R_j-1,r_i) - \text{max} (L_j+1,l_i)+1$ 。
我们发现 $R_j$ 和 $L_j$ 的答案可以分开算。
显然是等价问题,只考虑 $L_i$ ,我们把询问离线,按照 $l$ 排序,考虑 $l$ 到 $l+1$ ,我们对询问是 $l$ 的打上 $tag$ 然后删除贡献 ,开两颗树状数组即可。
每次查区间,再加上打上 $tag$ 的贡献即可。
复杂度 $O(n \log n)$ 。