04 2022 档案
摘要:传送门 于是,只有我不会 T1 的世界诞生了 一个区间合法的条件是左右端点是区间前 大 容易做到 ,但然后就不会了,甚至在笛卡尔树上折腾了半天下不来 枚举作为前 k 大的端点是不便于计算的 那么枚举第 大的位置,则所有比这个数大的位置都是可行的
阅读全文
摘要:传送门 只会到前 50 pts /kk 暴力就是对 tag 建虚点,每个点向其 tag 连权为 0 的边,同时 tag 向这个点连权为 1 的边 然后 01 BFS就可以过 30 pts m 较小,n 很大的话有原图中边的点数与 m 同阶,只对这些点跑最短路,剩下的与虚点答案一样 然后正解: 考虑每
阅读全文
摘要:传送门 bitset 是世界上最好的字符串匹配算法! 脑残想法: 保证了 ,那么不同的串长只有根号种 那么对每种长度分别做一遍,线段树上每个位置维护以这个位置为起点长为 len 的串的 hash 值 那么单点修改就是区间加等差数列了,这样可以维护出所有有用的 hash 值 然
阅读全文
摘要:传送门 只会到 /kk 发现最优解链上第一个串长度为 1 一定可行(好像没啥用 发现最优情况下链上上一个串一定是下一个串的最长 boader 于是跑 n 次 kmp 预处理出每个子串的最长 boader 即可 然后正解: boader 这个限制过强了(虽然用 SA 貌似也可以顺
阅读全文
摘要:传送门 好麻烦.jpg 首先容易想到 SAM 求出每种长度的本质不同子串个数 然后问题就变成了求某种长度的字典序第 大子串 发现每个节点代表了长度在某个区间内的一些子串 所以扫描线可以知道每个长度的子串的有效终止节点 然后就不会了 正解(做法 1)与之类似 考虑上面做法卡在哪里了:对一些
阅读全文
摘要:传送门 首先发现要求的子串的右边界是来搞笑的,最大字典序子串一定是这个前缀的一个后缀 然后考虑怎么求出一个前缀的字典序最大的子串的开始位置 第一反应是 SA,但是涉及到了这个前缀之后的比较而不可行 那么考虑这个前缀的每个后缀中,有哪些是可能在加入一些字符后成为新的最大字典序字符的呢? 发现一定是当前
阅读全文
摘要:传送门 算是比较好想的了 考虑每个串的每个前缀有哪些后缀是合法的 发现是这个前缀对应的节点到根节点路径上的一个前缀 那么可以倍增找这个前缀的长度 问题就变为对每个节点计算这个节点对应的子串被多少个原串包含 这其实就是一个树上数颜色问题 关于树上数颜色: 一个最经典的做法显然是 dsu on tree
阅读全文
摘要:传送门 终于有一个可以二分+hash艹的题了? 哦三个 log 过不去呀 那我来口胡一个大常数 做法: 查询两个串的时候在两棵 LCT 上将两个串分别 split 出来 在其中一个串上做平衡树上二分,另一个串用 kth+splay 协助完成二分 大概比三个 log
阅读全文
摘要:传送门 把 call 函数的定义读反了,自闭了一年 读反了其实也是可以做的 那么问题变为:给定串 ,对于一个 求 作为子串在 中出现的次数 做法 1: 因为我啥也不会嘛 对 建广义 SAM,考虑
阅读全文
摘要:传送门 好题! 首先可以反证得出最优解一定是从根开始的一条链 然后就不会做了 然后暴力就可以阶乘枚举,特殊性质就可以贪心了 然后有一个暴力 DP 不太容易想到 令 为所有滑稽果共有的位 那么最优策略下一定是先将其它位都弄成 0 令 为当前还有哪些位不为 0,达到这一
阅读全文
摘要:传送门 一眼 Lucas 定理,冷静发现 Lucas 定理仅适用于模数是质数的情况 那么考虑 Kummer 定理 Kummer 定理: 中(注意不是 中)含有 的次数是 在 进制下的进位次
阅读全文
摘要:传送门 一眼比较可做:转化成枚举连通块,求使这个连通块恰好为一个连通块的方案数就好了 然后想当然的把 枚举连通块 这个过程认为成了枚举区间 ,钦定 中的所有点恰好形成一个连通块 然而 这样的连边方式可以形成两个连通块,而
阅读全文
摘要:传送门 完了,连紫题都做不出来了/kk 首先观察数据范围可以猜到最后大概是枚举汇集点,然后一遍树形 DP check 是否合法 那么问题变为如何树形 DP 我一开始认为每个子树在经过若干次内部操作后能对子树外贡献的操作次数是一个区间 但是假的离谱,因为实际贡献区间是一车区间的并
阅读全文
摘要:传送门 为啥在沈老师眼里这是一道巨大无意义题啊 首先有一个 级别的暴力 令 为当前考虑到位置 ,递增序列中上个元素由 组成,已知要跨过/停留在 的元素集合为 的最小操作次数 转移枚举 的子
阅读全文
摘要:传送门 一眼感觉比较神,但性质还是很好找的 发现可以倒着扫 b 数组,需要某个数的话倒着从 a 中取 是需要的颜色就取,否则需要换到后面去 如果后面不需要它则无解 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3
阅读全文
摘要:传送门 令最两边的满足 的位置为 那么发现最终这两个位置要通过移动合到一起 而这两个位置离得较远的时候可以通过让 left 和 right+1 相等省掉一次操作 可以这样的条件是 left 与 right 不相等 点击查看代码 #inc
阅读全文
摘要:
阅读全文
摘要:传送门 直接辗转相除 因为模数是质数高斯消元,可以打 tag 优化 听说 70pts 可以手动解出,等讲题了补上 正解: 考虑根据行列式意义计算,但发现主对角线上的这些 1 很烦人 先考虑暴力枚举哪些位置选在主对角线上 发现并不好直接钦定剩下的都不在主对角
阅读全文
摘要:传送门 这个特殊性质指向性极强 可以考虑大力最小表示法记录后 个点的联通情况 这样看起来是不太能过的,那么怎么优化呢? 请读者认真思考后再看下面的解决方法 我们可以通过爆搜状态数实际上界的方法从本质上优化复杂度!爆搜可知有效状态数只有 个,于是可以 AC 了。 挺好。
阅读全文
摘要:传送门 MD 赛时写了一年只有 MLE 四十分 出来简单卡了一下空间就过了 正解是换根 DP 倍增处理 在路径上的情况 否则 与 路径上第一个在 这条链上的点是可以知道的 那么离线换根 DP,对这个点子树内前 3 远的点,向上倍增即可
阅读全文
摘要:[省选联考 2021 A/B 卷] 卡牌游戏 发现选的一定是一个前缀和一个后缀,所以可以双指针 其实答案有单调性,也可以二分,但没有想到 [省选联考 2021 B 卷] 取模 什么神仙题? 可以枚举模数 若所选两数之和大于模数则应贪心选最大的两个数 若不大于模数则可以双指针 然后一个
阅读全文
摘要:传送门 DP 式子是 那么这是个原题,Chtholly 树维护就好 点击查看代码 #include <bits/stdc++.h> using namespace std; #
阅读全文
摘要:传送门 计数时发现什么东西算重了的时候,先别想着跑路,先看看能不能容斥一下! 别管现在已经几层容斥或套了多少层其它算法了,也许再加一层容斥就能做了 考虑 怎么做 一个 naive 的想法是令 为前 个数,有 个
阅读全文
摘要:传送门 质数处取值易算 加入质数幂次易算 只要方便加入质数幂次就算不是积性函数也能 min25 筛 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 200010 #define
阅读全文
摘要:传送门 人类智慧可知只有逆序对数为奇数的排列不优美 i 可以用 [1, i+1] f ij 第 i 个数,j 没有用过 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 5010
阅读全文
摘要:传送门 看着比较可做,于是我反手一个莫比乌斯反演 T 成了 27pts 其实不需要反演 每个质因子及其幂次是独立的 \(ans=\prod\limits_p\pro
阅读全文
摘要:传送门 在打不开 OJ 的情况下考 OJ 上的题是一种什么样的精神体验? 发现是带删除线性基的板子题 那么 的带删除线性基(离线): 先说做法: 对线性基中每个基底维护出其删除时间 插入一个数时,若新插入的数与某个基底线性相关且删除时间更晚则交换这个
阅读全文
摘要:传送门 其实乱搞能过 正解(粘的题解): 每次从队头取出一个点 后,遍历它连向的所有节点 ,若 已经在队列中且不是 的前驱 那么说明我们已经找到了一条非平凡回路,并且这一定是最短的。此时 的最短路 就是答案 每个点最多入队一遍
阅读全文
摘要:传送门 ~~因为完全不会所以就直接说正解了~~ ~~全是错误的~~官方题解 OID的题解 考虑对大小的限制是难以处理的 但是若限制只有 < 而没有 > 就很好处理了 这种情况下是将 个数放入若干个递增序列中,使用可重集排列即可 那么考虑用容斥处理 > 的限制,枚举钦定不满足的,剩下的任意 这
阅读全文
摘要:传送门 因为正解就是随机化+数据水了,所以暴力可以 AC 然而我不会打暴力,于是…… 一个 序列前缀和的最大值是低于 级别的 首先容易想到一个状态 为 子树中向上延伸的链长为 的最大权 考虑怎么合并子树 赛时
阅读全文
摘要:传送门 关于「平面图动态权最小生成树」: 令 MST 上的边集为 ,考虑 的补集 ,计算边数得 也形成了一棵树 因为边权和是固定的,而 又是最小生成树,所以 是对偶图的最大生成树 那么用两棵 LCT 维护这两棵树,修改边权时若
阅读全文
摘要:传送门 wqs 二分的模板题 令 为选 个物品的最大收益,考虑 构成的凸包 若用斜率为 的直线切这个凸包,令切点横坐标为 那么切线截距为 那么将每次选择物品的收益减少 ,求最大收益,加
阅读全文
摘要:传送门 一眼费用流,第二眼发现费用函数不凸(( 考虑一下部分分怎么写: 先把无解判掉 然后 的话一定是 个连通块,一共 条边 如果 的话: 从这 个点开始跑 prim 拓展即可 正确性考虑最终答案一定在最小生成树上 然后
阅读全文
摘要:传送门 这场是来搞笑的吧 令 为在位置 前面且比 大的数的数量 可以发现每轮这个数恰好 -1 那么 轮后这个数会向前翻 个位置 但是它后面可能会有数翻到它前面 所以从后往前处理,线段树二分找到第 \(\
阅读全文
摘要:传送门 是出题人没学过语文还是我没学过语文(恼 写出的转移中需要与 取 那么二分这个东西的取值即可 p.s. 第五个包数据假了,不满足特殊性质 点击查看代码 #include <bits/stdc++.h> using namespace std; #de
阅读全文
摘要:传送门 根据部分分发现树高是 是可以做的 发现求的是距离,可以用点分治把树高弄成 对每个节点开一个子树大小的线段树,存子树内在集合中的点到它的距离 修改和查询跳祖先即可 复杂度 点击查看代码 #include <bits/stdc
阅读全文
摘要:传送门 补题使我快乐 将 均用 表示 变形得 感觉打表发现结论的概率比推出来大(雾 那么令 \(G_k(n)=\sum\limits_{i=2}^n[i\equiv 1\pmod 4\and(\operatorname{low}(i)
阅读全文
摘要:传送门 手玩样例 发现 1 号点是没有左子树的 考虑划分子问题 现在我们要处理点 的左子树形态已知,要求出 的右子树 考虑 在哪 若 在 的右子树中,则 没有左儿子 若 是 的父亲,那 \
阅读全文
摘要:传送门 输入中给定的边会形成一些连通块 枚举点对,若不在同一连通块中且连边后仍满足限制就连 复杂度 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100
阅读全文
摘要:传送门 [Ynoi2009] rprmq1 为了做这题去学了线段树历史最值和猫树分治 然后就没时间做这题了 发现只有一个前缀可以直接线段树历史最值 那么猫树的思想就是维护前后缀然后合并 恰好这个信息是可以 合并的 那么对时间轴做线段树分治 将修改下放到 个区间 按
阅读全文
摘要:传送门 在思维不连贯的时候调题就是浪费时间 我改这题用的时间严格长于改 T3 首先发现就是要找周长最长的内部不含其他点的矩形 枚举最左边界,扫描右边界,set 中维护相邻元素的最大差值可以做到 将加点改为删点,右→左扫描右边界+链表可以做到 发
阅读全文
摘要:传送门 首先写出转移方程: \(f_{i, j(j>1)}=(\sum\limits_v\max\{f_{v, 1...m}\})-\min\limits_v(\max\{f_{v, 1..
阅读全文
摘要:传送门 一眼第一问是普及 DP 一眼第二问记录方案就好了,有点麻烦是联赛 DP 一眼第三问方案数直接在 DP 时算,比第二问还好写 开码! 一小时后 MD 我哪里写错了 欸我写个拍 欸这数有点离谱 欸这应该是个 啊为啥我写的 啊 欸过拍了 欸测极限数据 欸 0.5 s 欸我交
阅读全文
摘要:传送门 真·全场唯一没做出来 T1 的人 发现这个 是定值,十分奇怪 那么枚举 的长度,暴力 hash 向后判 段 这样是 的 那么再向后二分合法的 的最长长度,覆盖即可 复杂度 \(O(n\ln n+n\log n)
阅读全文
摘要:前天挂了一个题,昨天挂了两个题,今天挂了三个题,有进步!
阅读全文
摘要:传送门 发现自己啥也不会了回来补一下 一张无向图中所有最小生成树中,每种权值的边的个数是相同的 证明: 口胡一种比较好理解的好了 考虑 kruskal 的过程,最小生成树的方案取决于相同权值的边的加入顺序 那么这个过程实际上可以看成每次加入所有权值相同的边,再删去一些这个权值的边使得其中不含简单环
阅读全文
摘要:传送门 首先将问题抽象成 给定一条链,链上每个点可能挂着一个子树,两个人从链的两端对向行走,随时可以钻进当前节点的子树里 而且一旦进了子树就再也出不来了 那么预处理每个节点子树内的最长链 令 那么这个东西实
阅读全文
摘要:定长分块对拍时记得调成根号/数据范围开到块长以上 随机化算法记得初始化随机数种子 貌似加上 -fsanitize=address,undefined 可以在一定程度上绕过编译空间限制
阅读全文