「Log」做题记录 2023.9.25-2023.10.29

\(2023.9.25-2023.10.1\)

\(\color{limegreen}{P3524}\)

考虑删掉两个不相连的点,这两个点必定一个在团内一个在团外,删掉 \(\frac{n}{3}\) 个点对之后一定保证剩下的点都在我们要的团内。

\(\color{limegreen}{P3522}\)

单调队列维护一下左右端点,加入时取交即可。

\(\color{royalblue}{P3520}\)

考虑到性质类似欧拉图,求欧拉回路缩环时求解即可。

\(\color{royalblue}{P3518}\)

考虑到性质:若 \(a\) 为密码,则 \(\gcd(n,a)\) 一定为密码,并且其倍数也是,求最小的合法 \(d|\gcd(n,x)\),有答案 \(\frac{n}{d}\)

\(\color{royalblue}{P3528}\)

塞到堆里贪心即可。

\(\color{royalblue}{P3521}\)

类似 CDQ 的,线段树合并的过程中求解即可。

\(\color{blueviolet}{P3519}\)

存下每个字符出现的所有位置,枚举最多、最少字符,将两个字符出现位置拿出来合并扫一遍求最大子段和即可,均摊复杂度正确。

\(\color{blueviolet}{P3527}\)

较为板的整体二分,思路奇妙。

\(\color{blueviolet}{P3523}\)

二分+树形 DP 验证。

\(\color{royalblue}{CF1795E}\)

先变成单峰最优,DP一下就行。

\(\color{blueviolet}{CF1794E}\)

对于每种距离存个哈希跑就行了。

\(\color{blueviolet}{P3525}\)

结论题,只有重心有解,写就完了。

\(\color{black}{P3516}\)

构造题,不知道为啥是黑的,贪心一下就行。

\(\color{blueviolet}{CF1486F}\)

讨论 LCA 相同与不相同,相同的拿个桶就解决了,不同的拿树状数组区间加和算贡献。

\(\color{blueviolet}{P3560}\)

最大流,考虑每次限制源点流量,跑残余网络。

\(\color{limegreen}{P3560}\)

贪心地扫一遍。

\(\color{limegreen}{P3558}\)

注意到性质后直接 DP 即可。

\(\color{limegreen}{P3550}\)

巨大细节贪心。

\(\color{limegreen}{P3551}\)

逆着思考,贪心即可。

\(\color{royalblue}{P3556}\)

离线处理,维护最小奇偶距离。

\(\color{royalblue}{P3557}\)

注意到一种性质使得直接构造成为正解。

\(\color{blueviolet}{P3554}\)

二分+DP 验证。

\(\color{blueviolet}{P3563}\)

最小值是直接一层正边一层反边使得一个边贡献一个点对,最大值不难想到找重心的所有子树做背包,恶心的是需要 bitset 优化,阴间的。

\(\color{blueviolet}{P3553}\)

二分+模拟验证。

\(\color{royalblue}{P3579}\)

整除分块即可。

\(\color{royalblue}{P3567}\)

主席树板子。

\(\color{blueviolet}{P3566}\)

从多到少放置即可。

\(\color{blueviolet}{P5952}\)

把墙看作边,跑最小生成树的时候维护一下答案即可。

\(\color{blueviolet}{P6663}\)

构造题,在最小值基础上回转构造即可。

\(\color{blueviolet}{P3515}\)

考虑到贡献只会有 \(\sqrt n\) 个数产生,直接枚举。

\(\color{blueviolet}{P3562}\)

按照斜率排序跑 DP 即可。

\(\color{blueviolet}{P5955}\)

贪心的选,双指针扫一圈。

\(2023.10.2-2023.10.8\)

\(\color{black}{P3547}\)

分类讨论,然后删边优化复杂度。

\(\color{blueviolet}{P3576}\)

倒推即可。

\(\color{blueviolet}{P3580}\)

单调队列优化 DP。

\(\color{blueviolet}{P3575}\)

乱搞。

\(\color{blueviolet}{P3564}\)

做前缀和,考虑到相邻位置只会相差一,贪心即可。

\(\color{blueviolet}{P3569}\)

维护区间左右端点情况。

\(\color{blueviolet}{P3565}\)

\(n^2\) 统计一下即可。

\(\color{blueviolet}{P3574}\)

树 DP 一下。

\(\color{blueviolet}{P7561}\)

二分+set 搞一下。

\(\color{blueviolet}{P9521}\)

化式子后维护凸包。

\(\color{royalblue}{P3536}\)

记录每个数取到哪里,打标记即可,复杂度线性自然对数。

\(\color{blueviolet}{P3540}\)

\(x_i\) 从小到大排序,则 \(x_2+x_3\) 会带来不确定性,枚举其位置即可。

\(\color{blueviolet}{P3539}\)

每次找最的斐波那契数即可,递归运算,只会越来越小。

\(\color{blueviolet}{P3532}\)

考虑枚举 \(\gcd\),预处理一下最小次小质因数分解指数和的倍数即可。

\(\color{blueviolet}{P3534}\)

神仙贪心。

\(\color{blueviolet}{P3570}\)

记录位置随便处理即可。

\(\color{royalblue}{CF1775E}\)

转成前缀和一眼切。

\(\color{blueviolet}{CF1253F}\)

考虑经过一条边的限制,列不等式后可以最小生成树。

\(\color{blueviolet}{CF1736E}\)

DP。

\(\color{blueviolet}{CF908G}\)

数位 DP。

\(\color{royalblue}{P5058}\)

圆方树板子。

\(\color{blueviolet}{P3542}\)

处理上界,从小向大贪心。

\(\color{royalblue}{P3531}\)

直接转逆序对数。

\(\color{blueviolet}{P4320}\)

建圆方树,求两点路径之间圆点数量。

\(\color{blueviolet}{CF997C}\)

化简式子直球。

\(\color{royalblue}{CF991D}\)

贪心可行。

\(\color{blueviolet}{P4606}\)

圆方树,询问点按照 DFS 序排序,计算贡献。

\(\color{blueviolet}{P4630}\)

圆方树+树 DP。

\(\color{blueviolet}{CF487E}\)

圆方树+树剖。

\(2023.10.9-2023.10.15\)

\(\color{blueviolet}{CF1763F}\)

直接圆方树即可。

\(\color{blueviolet}{P3577}\)

根据深度不超过 \(10\) 进行状压。

\(\color{blueviolet}{P3530}\)

差分约束型连边,根据强联通分量统计贡献。

\(\color{blueviolet}{P3546}\)

一个强联通分量答案固定,多个之间互不影响,考虑一个强连通分量贡献即 \(\min\{dis(i,j) + 1\}\)\(i,j\) 都为其中的点),Floyd 求解即可。

\(\color{blueviolet}{P3533}\)

分讨点对情况,倍增维护一下随便做了。

\(\color{black}{P3543}\)

先转换为差分,套一个 exgcd,求出特解之后调和即可。

\(\color{blueviolet}{CF1059E}\)

倍增后预处理每个点最多向上扩展到哪里,从叶子节点向上贪心即可。

\(\color{blueviolet}{P3976}\)

大力树剖。

\(\color{royalblue}{CF40E}\)

考虑到有一行或一列一定空着,去掉了一维限制,剩下的随便搞。

\(\color{blueviolet}{P4381}\)

求基环森林直径和,讨论直径情况,对于经过环的直径可以进行单调队列优化。

\(\color{limegreen}{AT\_abc243\_e}\)

考虑一条边被删的充要条件即可。

\(\color{royalblue}{AT\_abc243\_f}\)

考虑线性 DP,将前一些个拿出来抽取一些。

\(\color{royalblue}{CF466E}\)

离线下来乱搞,转换为判断一个点在不在一条直链(不拐弯)上。

\(\color{blueviolet}{CF838B}\)

大力树剖,简单维护一下子树内信息随便做。

\(\color{blueviolet}{CF1778F}\)

注意到值域很小,打进 DP 状态,约数个数级别在 \(\sqrt V\),随便做(虽然赛时没切出来)。

\(\color{blueviolet}{CF1632E1}\)(\(\color{blueviolet}{CF1632E2}\) 双倍经验)

考虑对于一个 \(x\),可以列出关于 \(ans_x\) 的不等式,求虚树直径即可,简单维护后根据 \(ans\) 单调性 \(O(n)\) 做。

\(\color{royalblue}{AT\_abc243\_g}\)

不难想到 \(\sqrt n\) DP,考虑计算重复贡献方式即可做到 \(n^{\frac{1}{4}}\)

\(\color{blueviolet}{P7961}\)

DP,状态很妙。

\(\color{limegreen}{AT\_abc242\_e}\)

考虑是否顶到上限,对每一位做一下就行。

\(\color{royalblue}{AT\_abc242\_f}\)

考虑黑车放完之后白车贡献是好算的,设 \(f_{i,j,k}\) 表示用 \(i\) 辆车刚好占用 \(j\)\(k\) 列,转移是好推的。

\(\color{royalblue}{AT\_abc242\_g}\)

莫队板子。

\(\color{royalblue}{CF912D}\)

考虑每只鱼的贡献,贪心地从中间向四周放,堆 + BFS 即可。

\(\color{royalblue}{CF840B}\)

一条无向边贡献两个度数,所以度数一定为偶数,并且偶数一定有解,DFS 构造即可。

\(\color{royalblue}{CF1037E}\)

倒序处理删点即可。

\(\color{royalblue}{CF1278D}\)

树的边数一定为 \(n - 1\),大于这个边就停止,否则就并查集维护连通性。

\(\color{blueviolet}{CF229C}\)

纯纯数学题,简单的。

\(\color{blueviolet}{CF1082E}\)

转换为区间内众数出现次数与此区间内 \(c\) 个数差值最大值,维护前缀和处理即可。

\(\color{blueviolet}{CF859E}\)

连有向边之后分讨即可。

\(\color{royalblue}{CF893E}\)

不难想到按照质因数处理,正负分开做,排列组合即可。

\(\color{blueviolet}{CF746G}\)

每层有叶子数量的上下限,求出后构造即可。

\(2023.10.16-2023.10.22\)

\(\color{royalblue}{CF1201D}\)

因为只能从下向上走,所以就只用一行一行考虑,对于一行显著从一头走到另一头是最优的,所以记录 \(f_{i,0/1}\) 表示取完第 \(i\) 行后在左 / 右的最少行走数量,至于安全列的限制只要预处理左右最近的安全列即可。

\(\color{blueviolet}{CF346B}\)

LCS 问题基础上多加一维,记录第三个串匹配了多少,记一个 KMP 的 \(nex\) 数组即可。

\(\color{blueviolet}{CF509C}\)

贪心地,一定是从低位向高位放 \(9\) 使得一个数尽量小,在此基础上,枚举当前数字哪一位第一次比上一个数字大并且合法,最小的显然最优。

\(\color{blueviolet}{CF354C}\)

枚举公因数,找合法区间,桶前缀记一下就解决了,复杂度线性自然对数。

\(\color{blueviolet}{CF1152D}\)

贪心地,考虑偶数深度点都选最优,类似卡特兰数的递推求解即可。

\(\color{blueviolet}{P3302}\)

不考虑连边操作就简单地主席树即可,连边启发式合并就行。

\(\color{blueviolet}{CF1146F}\)

DP,三种状态是显然的,只要注意转移即可,每次将一个子树合并到当前处理过的子树中。

\(\color{blueviolet}{CF1583F}\)

神仙构造题,题解塞到套题里面。

\(\color{blueviolet}{P4768}\)

预处理到 \(1\) 的距离,然后 Kruskal 重构树简单倍增维护一下即可。

\(\color{blueviolet}{P4322}\)

式子是显著的,考虑分数规划,二分后树 DP 也是显著的。

\(\color{blueviolet}{P6087}\)

显著的分数规划,需要注意的是可能出现区间长度小于 \(L\) 的解,所以要扩展至 \(L\) 进行特殊处理。

单调队列边界寄了,调了好一会。

\(\color{blueviolet}{P2473}\)

状态是显著的,但正着转移并不可以,因为状态分布不均匀,没法直接算方案数,所以倒着转移。

感觉是典型的题,有点神仙(大概吧)。概率正着推,期望逆着推。(题解里的话。)

\(\color{blueviolet}{P4197}\)

思路是显著的,Kruskal 重构树后上主席树查询(按照 DFS 序建即可)。

\(\color{blueviolet}{P3209}\)

2-SAT。

\(\color{blueviolet}{CF27D}\)

2-SAT。

\(\color{blueviolet}{CF1030E}\)

不难想到结论,序列必须 \(1\) 数量为偶数并且最大的 \(1\) 个数不能超过总和一半。

\(\color{blueviolet}{P1505}\)

树剖,简单的。

\(2023.10.23-2023.10.29\)

\(\color{blueviolet}{P6348}\)

显著的线段树优化建图。

\(\color{blueviolet}{P2482}\)

猪国杀,巨大模拟。

\(\color{royalblue}{CF1772G}\)

首先从小往大打,对于每一轮有一个正负分界点,考虑分界点后移情况,细节处理即可。

\(\color{blueviolet}{CF369E}\)

正难则反,转化为二维数点,二维偏序即可。

\(\color{blueviolet}{CF348C}\)

根号分治,超过根号级别的集合一共有不超过根号个,打标记处理即可。

\(\color{blueviolet}{CF1495D}\)

考虑对于 \(x\)\(y\) 共同的生成树一定包含两者的最短路径。

先假设 \(x, y\) 最短路径有且只有一条,考虑其上一点 \(z\)\(x, y\) 两者中一者到其最短路径依然有且只有一条,为了满足 \(dis(x, z), dis(y, z)\) 不变,必须保留此最短路。

\(x, y\) 最短路径不止一条时,对于这两条路径上的点依然需要满足上述 \(z\) 的条件,因此多条最短路都需要保留,此时一定会成环,无法保持树的形态,也就一定无解。

现在对于 \(x, y\) 两点已有一条唯一的链链接,考虑其他点如何挂在树上。对于一个点 \(u\) 有边 \((u, v)\),若保留此边(使得 \(v\)\(u\) 的父节点)必须满足 \(dis(x, v) + 1 = dis(x, u) \land dis(y, v) + 1 = dis(y, u)\)。所以我们对于一个点找出其合法父节点个数,对所有的点乘法原理计数即可。

\(\color{blueviolet}{CF1511G}\)

首先转化问题,对于一个询问只要判断 \(\bigoplus \limits _{l \le c_i \le r} c_i - l\) 是否等于 \(0\) 即可。

\(f_{i, j}\) 表示 \(\bigoplus \limits _{i \le c_i \le i + 2 ^ j - 1} c_i - i\),考虑如何倍增转移。

\(f_{i, j}\)\(f_{i, j - 1}\)\(f_{i + 2 ^ {j - 1} - 1, j - 1}\) 两部分组成,前者的异或和可以直接转移过来,后者包括的元素每个会与需要的值相差 \(2 ^ {j - 1}\),所以需要额外异或上后者元素个数个 \(2 ^ {j - 1}\),只需要通前缀和维护一下区间元素个数即可。

\[f_{i, j} = f_{i, j - 1} \oplus f_{i + 2 ^ {j - 1} - 1, j - 1} \oplus \left([(g_{i + 2 ^ j - 1} - g_{i + 2 ^ {j - 1} - 1}) \mod 2 = 1] \times 2 ^ {j - 1} \right) \]

求答案也是类似的,倍增逼近即可。

\(\color{blueviolet}{CF1510B}\)

首先考虑转化问题,进行简单图论建模,每个状态向可以达到的状态连边,于是得到一张 DAG。

首先考虑最劣情况,对于每一个点单独成为一条路径进行覆盖,贡献是其二进制下 \(1\) 的个数。每一个点可以选择一个出边把自己贡献抵消掉,这个就类似二分图最大匹配,费用流即可。

\(\color{blueviolet}{CF1539F}\)

我们只考虑 \(a_i\) 大于中位数的情况,另一情况可以通过取负反转数组取到相同情况,式子只有一个加减 \(1\) 不同。

区间固定时贡献是 \(\frac{t_l + t_m + t_r}{2} - t_r = \left \lfloor \frac{t_l + t_m - t_r}{2} \right \rfloor\)

其中 \(t_l, t_m, t_r\) 分别表示小于、等于、大于 \(a_i\) 的 数字个数。

然后运用到一个套路,对于这种中位数的东西离线并从小到大遍历数字,比自己小的设为 \(-1\),比自己大的设为 \(1\),求一下以 \(i\) 结尾的后缀最大、以其开头的前缀最大,求和即可。

\(\color{blueviolet}{CF1469F}\)

首先注意到先挂长链更优,并且将中点挂在树上是更优的,可以使得整体深度更小。

\(fa\) 为链挂在上面的点,则会使得深度为 \(dep_{fa}\) 的点减少一个,并增加连续深度的两段点数,用线段树维护即可,注意分讨奇偶即可,以及注意空间。

\(\color{blueviolet}{CF1523E}\)

从期望的定义入手,转化为对在第 \(i\) 次仍没结束的概率求和,转化为古典概型直接排列组合即可。

\(\color{royalblue}{CF1515G}\)

首先一定要在强连通分量中进行求解,并且强连通分量里的环可以选择经过多次,次数可以是负数,因为模意义下是等价的,于是我们将所有的基本环找出来后用裴蜀定理求解即可。

posted @ 2023-09-26 07:24  Eon_Sky  阅读(27)  评论(0编辑  收藏  举报