Loading

云了还没来得及写的题

P5398 [Ynoi2018] GOSICK

考虑二次离线莫队,先把莫队询问离线下来。

对于 \(([1,i-1],i)\) 的贡献包含 \(1\)\(i-1\)\(a_i\) 的倍数和约数个数,约数直接枚举,倍数的话如果 \(a_i<\sqrt n\) 直接在之前维护出来,否则暴力在桶里面统计一下就行了。

考虑另外一部分 \(([1,ll-1],i)\) 的贡献,在添加每个数的时候维护,以其为倍数的数直接根号枚举其约数即可,以其为约数的数,如果 \(a_i \geq \sqrt n\) ,直接暴力扫一遍它所有的倍数。

关键是考虑小于 \(\sqrt n\) 的数,现在有若干组形如 \([ql,qr]\) 内有多少个 \(a_i\) 的倍数的询问,我们直接维护一个前缀和处理即可。

这题卡常所以用普通数组来代替 \(\text{vector}\) ,调整一下块长就行了。

P4648 [IOI2007] pairs 动物对数

曼哈顿距离转切比雪夫距离

P7883 平面最近点对

平面最近点对模板题

Expensive Strings

广义 \(\text{SAM}\) 模板题

ABC269G - Reversible Cards 2

考虑 \(\sum_{i=1}^n(a_i+b_i) \leq M \leq 2\cdot 10^5\) ,因此不同的 \(a_i-b_i\) 只有 \(\sqrt n\) 种,把相同的合并然后跑 \(\sqrt n\) 次单调队列优化多重背包即可。

P8947 Angels & Demons

建出广义 \(\text{SAM}\) ,每次添加文本串的操作其实就是给树链的并加上 \(1\) ,用 \(\text{dfs}\) 序维护一下即可。

P3715 [BJOI2017]魔法咒语

\(\text{AC}\) 自动机上 \(\text{DP}\) 加上矩阵乘法,复制一棵 \(\text{AC}\) 自动机以限制长度为 \(2\) 的好串。

ABC285F - Substring of Sorted String

对每个字符开一个树状数组维护即可。

CF1777E. Edge Reverse

考虑如果缩完强联通分量之后,只存在一个无入度的点的话,就符合条件。直接二分答案,每次判定就是将边权小于二分值的边加上反向边,跑 \(\text{tarjan}\) 即可,时间复杂度 \(O((n+m) \log w)\)

CF1777F. Comfortably Numb

此题直接考虑以每个点为左端点的区间并不好做。由于所求有一个 \(\max\) ,我们可以直接通过枚举区间的最大值来解决。这个可以使用笛卡尔树。注意异或的性质,区间 \([l,r]\) 异或和可以转化成 \(r\) 的前缀异或和异或上 \(l-1\) 的前缀异或和。

因此我们对于笛卡尔树上的每一个节点, 用 \(\text{0-1 Trie}\) 维护这个节点子树内所有点的前缀异或和,向父节点合并更新的时候启发式合并就行了。时间复杂度 \(O(n \log n \log w)\)

CF1792F1. Graph Coloring (easy version)

首先这题需要发现一件事情,就是染色成红色/蓝色是等价的,因为你把所有的颜色取反,也是一种合法的方案。

那么我们考虑只对蓝色计数,记 \(B_i\) 表示大小为 \(i\) 的完全图,全图蓝联通的方案数,\(A_i\) 表示总方案数。

考虑转移,我们枚举和 \(1\) 所在同一个蓝联通的点的个数,剩余的点可以蓝联通,也可以红联通,两个点集之间的连边必须全是蓝色。

\[B_{i}=\sum_{j=1}^{i-1}{i-1 \choose j-1}B_jA_{i-j} \]

\[A_{i}=2B_i \]

直接 \(O(n^2)\)\(\text{dp}\) 就可以通过 \(\text{easy version}\)

CF1792F2. Graph Coloring (hard version)

\(B\) 的转移方程是一个卷积的形式,我们先画一下式子。

\(C_i=\frac{B_i}{(i-1)!},D_i=\frac{B_i}{i!}\) ,我们将其代入转移方程。

\[B_{i}=(i-1)!\sum_{j=1}^{i-1}C_jD_{i-j} \]

分治 \(\text{FFT}\) 解决就行了。

CF1780E. Josuke and Complete Graph

如果小于等于 \(l\)\(a\)\([l,r]\) 的子图中出现,那么等价于:

\[\left \lfloor \frac{r}{a} \right \rfloor-\left \lfloor \frac{l-1}{a} \right \rfloor \geq 2 \]

对于后者由于 \(l \leq 10^9\) 不同的取值只有 \(\sqrt{10^9}\) 种,直接数论分块就可以做了。

CF1780F. Three Chairs

考虑容斥,先让答案是 \(n \choose 3\) ,然后去除掉所有的以 \(a(a>1)\) 为公约数的不合法的方案数,容斥系数是 \(\mu(a)\)

CF1780G. Delicious Dessert

\(\text{SAM}\) 板子题,预处理出 \(1-n\) 所有数的约数即可。

CF1790G. Tokens on Graph

只考虑可行的点跑最短路,然后在看某个出发点边上可行点数量,如果有连续两个点在边上就可以走无限次。

ABC286F - Guess The Number 2

直接构造环然后 \(\text{CRT}\) 求解就行。

ABC286G - Unique Walk

将不在 \(S\) 里的边加上缩点判欧拉回路即可。

ABC286Ex - Don't Swim

将起点、终点跟多边形的每一个点放在以其跑凸包,如果两个点都在凸包内,就是两边取个 \(\min\) ,否则就是两点直线距离。

ABC287F - Components

树形 \(\text{dp}\) 。记 \(f_{i,j,0/1}\) 表示以 \(i\) 为根的子树,子树内连通块数量为 \(j\)\(i\) 是否在某个连通块内的方案数。

转移如下:

\[f_{x,i,0}=\sum_{j=0}^{sz_y}f_{x,i-j,0}\cdot (f_{y,j,0}+f_{y,j,1}) \]

\[f_{x,i,1}=\sum_{j=0}^{sz_y}f_{x,i-j+1,1}\cdot f_{y,j,1} \]

ABC287G - Balance Update Query

线段树上二分板子题。

ABC287Ex - Directed Graph and Query

顺序枚举点,记 \(a_{i,j}\) 表示从 \(i\) 点出发能否到达 \(j\) ,从初始对于每条边 \((u_i,v_i)\) ,有 \(a_{u_i,v_i}=1\) ,然后跑 \(\text{floyd}\) 即可,\(\text{bitset}\) 优化一下即可做到 \(O(\frac{n^3}{64})\)

posted @ 2023-01-13 16:21  _YangZJ  阅读(46)  评论(0)    收藏  举报