1. 【数据删除】
给定一张带边权图,询问从 1 开始出发的路径,边权异或和一共有多少不同的权值。还有若干次删边操作(永久的),删一次问一次。
P4151 【[WC2011]最大XOR和路径】的结论,取出任意生成树 ,假设所有从 出发又回到 的路径权值构成的集合为 ,在 中 到 的路径异或和是 ,那么所有从 出发到 的路径权值集合就是 .
如果 能够通过若干 中的元素异或得到 ,那么就称它们之间等价。假设 线性基大小为 ,那么答案就是等价类个数 .
这个是因为等价具有传递性,等价类划分可以直接按照 与 中元素异或得到的最小值来划分。因为不同的 与 张成的线性空间要不然无交要不然完全相同。
删边就不是很难了,倒过来看成加边,对于每个极小简单环(这里是指最终挑选出的 dfs 树上由一条返祖边和它跨过的树边构成的环,因为仅有这些环就能表示出所有的环)都能求出它在哪个时刻开始形成,在哪个时刻开始和 1 连通,两者取 max 在那个时刻加入线性基即可。
每次线性基加入元素的时候,如果加入成功则直接重构一下所有 对应的等价类,加入失败那就只算新加进来的。
[ABC304Ex] Constrained Topological Sort
对于边 , 之后不管图,直接从前往后拿个堆贪心每次选扫过 的 最小的。首先转化前后限制等价,其次一定有 和 ,这样 在 前面加入,并且优于 弹出,自然有 的限制满足。
如果只 fix 也是对的。若存在解 ,先重标号使得拓扑序为 的是节点 .在分配标号 时定义一个节点 “可分配”当且仅当 且连向它的点均已分配完了标号。
若分配 时可分配的节点中 最小的是 ,那么调整说明将 分配给节点 依然是一个合法的解。
现在将 调整为 .
- 首先 中没有连向 的边( 是可分配的,而这中间的点均未分配标号),所以 则 的限制依然满足。
- :限制变紧的只有 ,而 .
- :
- 仅需说明 中的满足即可。若其中的 是可分配的,那么 ;
- 若其中 是不可分配的,说明有一个可分配的点 能够走若干条边到达 ,那么 .
- 说明了 ,那么有 .
2. 维护点和区间的完美匹配问题
利用 Hall 定理,区间的任意一个集合,其大小要 区间并起来之后的点数。如果有不合法,那么并起来之后若干连续的段一定有一个段是不合法的。去考虑点数,那就是不能有 满足被包含在 内的区间个数 .
3. 一类堆贪心前 k 优方案题
4. hdu 多校 R10 1002 Assignment
操作两两不交或包含。dp 出 表示从空开始覆盖区间 ,有 个位置和 不一样的最小代价,然后容易用另一个 dp 统计出答案。那么转移就两种,一种是不存在 这个操作,那么一定中间有个划分点 ,让 和 拼出来得到 ;另一种存在 操作。
没想到的就是这部分可以另设 表示从全是 开始覆盖 的最小代价,也就是从 的定义修改了如果颜色是 那么可以忽略代价。这样 和 能拼出 ,这样就能用 来更新 .
5. CF487E
建出圆方树,即为询问两点直接所有点双的点权 .因为对于点双中任意三个不同的点 ,一定存在一条 的路径。那就树剖维护圆方树,方点的权值定义为周围圆点的 。但是同一个圆点可能对应了很多个方点,于是对方点进行儿子批量维护父亲单独处理的套路,方点只记为所有圆点儿子的 ,只需要在 LCA 是方点时看一下其圆点父亲的值即可。
6. CF666E
询问 在 中出现次数,就对 和 作广义 SAM 然后把 放在上面跑,跑到的位置 cnt++
,然后 对应等价类的 parent 子树和即为答案。每个 看作一种颜色,就是子树颜色个数最大值及其位置,在 parent 树上线段树合并即可,定位 对应的节点就倍增。
7. CF914F
没救了能被蓝题干爆的??看到字符串匹配问题枚举字符串算法,但也要记得还有 fft 和 bitset 这两个东西。上 bitset,对每个字符开一个 bitset 表示它所在位置,询问的时候就位移一下 bitset,与一下,然后统计一下区间 1 的个数就行,复杂度是 .
看这个问题太难了那就想根号,长度 的直接 kmp 跑出来答案。 的就考虑分块,整块块内的查询就对每个块作一个后缀自动机,parent 子树和, 定位等价类;散块块内用 hash 一个一个 check;块间一定是前面后缀拼上后面前缀,也是用 hash 一个一个 check。修改的时候重构所在块的 SAM 和 hash,这样复杂度就是 .
8. CF603E
先想想怎么 check,思路历程大概是先想到是不是等价于匹配,发现四个点的菊花那样也是合法的,沿着匹配的思路走发现如果 存在一条路径,那么将路径上的边的选取状态取反,即可使得 的度数奇偶性均取反。所以合法当且仅当每个连通块大小都是偶数,而且能选就选是最优的。
题解里的证明思路是考虑拉出来一棵生成树,然后直接对着生成树递归构造,如果这棵子树的根不满足度数条件就和父亲连。只需说明根也是偶数度数即可。
现在会 check 了,整体二分,solve(l,r,L,R)
表示处理 的这些边的时候,已知答案范围是 ,并且此时 中 的已经加入到并查集中,求出 的答案 之后,递归到 solve(l,mid-1,k,R)
和 solve(mid+1,r,L,k)
,向右递归的时候扫 里面权值 的边加进去,回溯回来的时候撤销掉;向左递归的时候扫权值在 中位置 的边加进去,回溯回来的时候撤销掉。注意这里权值可能需要离散化一下,相同的也钦定一个顺序,这样在向左递归之前扫描桶的时候,单独分析分治每一层中的各个节点,它们的 并起来得到了 ,所以这里扫桶在同一层是 的,那么现在复杂度就是 的了。
9. CF576E
每种颜色搞个扩展域并查集,那么就需要加边删边查询连通性,LCT。。。线段树分治递归到叶子 的时候得到它是否修改成功,再在 这个区间 push 上这个修改就行。咋都这么若至。。。
10. CF1037H
从大到到小枚举 的一个前缀 ,判断 中是否有一个子串是 后面接一个比 更大的字符.
SAM:对 作 SAM,定位到 对应节点,然后查询 的后继节点,是否存在一个 endpos 在 内。1. 线段树合并解决。2. 问题形式化成每次查询 SAM 一个节点是否有 内的 endpos,离线下来枚举 ,把 endpos 为 的那个节点打一个 的标记,询问一个节点就是它 parent 子树中标记的最大值是否 ,这样线段树即可解决。
SA:S 以及各询问串之间用比 小的字符连接起来.枚举 的一个前缀 ,二分出 LCP 恰好为 len
且后一个字符比 大的区间 ,那么就是问 中是否有后缀的编号 是 ,并且 要尽可能小。
11. CF1628E
颜色段均摊之后问题就是询问 到 中的最短路径中最大边权是多少,先联想到二分答案,如果 的边连起来之后 和 是连通的,那么答案 .发现问题是《只经过 的边》是否能将 与 连通,从而想到 Kruscal 重构树。那么建出 Kruscal 重构树之后 与 构成的虚树的根的权值即为答案。线段树维护区间 LCA 即可 一个点集的 LCA 是 dfn 最小/最大这两点的 LCA,于是只需要支持查询区间 dfn 极值即可。其实也不用再拿个 set 颜色段均摊,用线段树维护白点的 dfn 最小最大就行,好写一点。
12. CF1063F
呃之前口胡过但是又想了一遍才发现细节上有点偏差。题解。
13. CF1017G
先考虑没有 2 操作,发现就是询问 到根的路径的是否存在一个前缀满足修改次数 点数。移项之后就是初始每个点是 ,然后操作 1 就是单点 +1,询问是否有个前缀和 .有了操作 2 之后我们需要适当的修改点权。洛谷题解里有个比喻很好,这个看成一个晕染操作,假设 这个地方最大前缀和是 ,那么在 这个位置减去 ,用这个来吸收墨量,然后将子树其他点点权均改成 -1 就行。
14. QOJ6795
对于一个线性基,令 表示用线性基里的元素和 异或出来的最大值(或最小值),结论是 ,证明就是左右两边同时贪心,决策完最高位从而归纳到最高位更低的情况。
这个题先变成将一个数 从线性基 里转一圈,再从线性基 里面转一圈, 想异或出来最大, 想异或出来最小。于是让 queryminB(x)
在 queryminB(A[i])
构成的线性基里转一圈出来最大值就行。
15. CF1863G
看成内向基环森林,操作 相当于让 连向 所连的点, 变成自环。发现如果一个点 变成了自环,那么操作任意一个 都没有用。
从简单的情形出发,对于一个内向树(或者说环大小为 的内向基环树),每次操作 时,相当于让 变成一个自环,然后 的父亲就变成了 ,并且 其它子树往上连的边再也不能跨过 .于是想到用树链剖分去对应操作出来的一张图。对于一条树链,让链底连向链顶的父亲,非链底的节点都是自环。
于是每次操作 的时候,如果 是链底并且链顶的父亲还没有重儿子,那么将链顶到父亲的这条边设为重边,否则什么也不干(对应 是自环或 连向了一个自环)。于是这样完成了链剖分方案与一张合法图方案的双射。这里有个问题是根已经是自环了,所以不能它不能有重边连下去。于是方案数就是除了根以外的度数 +1 之积 .
现在考虑环很大,依然想要让它去对应链剖分的情况。当环上全是重边的时候定义其表示环上所有点都是自环。
但是这个时候发现有计重的情况,当环上只有一条边不是重边的时候会出现这样的计重:
环上点的入边轻重选取方案将所有左侧的这种情况减去即可,也就是减去 .所以答案就是
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
2022-08-31 一次对计数问题将常用套路形式化剖析的尝试