正解:线段树分治+线性基

解题报告:

传送门$QwQ$

考虑如果只有操作3,就这题嘛$QwQ$

欧克然后现在考虑加上了操作一操作二

于是就线段树分治鸭

首先线段树叶子节点是询问嘛这个不用说$QwQ$.然后把每条边放到所有它存在的区间上.

然后处理询问的话就$dfs$遍历线段树,删边操作就可以直接按栈序撤销了

最后梳理下这题的大致思路趴$QwQ$.首先以询问为节点建一棵线段树,并把每条边放到所有它会出现的节点处,然后$dfs$整棵线段树计算答案.

具体说下$dfs$的过程趴$QwQ$.

首先显然是要维护一个连通性和两点之间的路径异或值.

考虑现在加入点$(x,y,z)$,表示一条连接$xy$边权为$z$的边

然后如果$xy$在一个并查集内,就多了一个长度为$dis(x,y)\ xor\ y$的环,就给加入线性基中.

否则就把两个并查集合成一个,同时给其中一个并查集中的$dis$全部$xor$上一个值就成

(我好像又没讲清楚,,,就我同时还对每个点维护了它到并查集的根节点的距离,这样求$dis(x,y)$就可以直接$dis_x\ xor\ dis_y$了$QwQ$

(这个值就,合一块儿之后另一个并查集内的点改变的到根节点的距离,也就是$dis_x\ xor\ dis_y\ xor\ z$

然后在撤回操作的时候,直接按栈序撤回就成,就不用可持久化并查集了.

最后还有一个点是,关于撤回操作中线性基怎么删环.

事实上线性基要删除一个元素是挺难的,所以这里的实现是每次复制一个线性基,因为内存占得不大所以是没有影响的(这个和之前寒假的时候考的$shallot$有点儿像(虽然,那道题,我到现在还没落实呜(我落实真的好辣鸡阿我哭了

所以$dfs$的大致流程就,先加边,然后$dfs$,然后撤回,$over$,细节在上面,虽然有点儿杂乱无章但还是比较详细了$w$

然后就做完了?$umm$好像条理不太清楚的亚子,,,算了不懂的直接康代码趴$QAQ$

随机推荐

  1. vue简单总结

    首先  介绍几个常见指令 指令:以属性的形式出现在标签上 v-xxx 1.内置指令 数据绑定指令  v-html v-text    举例 <span v-html="msg" ...

  2. CDQ分治 三维偏序

    这应该是一道CDQ分治的入门题目 我们知道,二维度的偏序问题直接通过,树状数组就可以实现了,但是三维如何实现呢? 我记得以前了解过一个小故事,应该就是分治的. 一个皇帝,想给部下分配任务,但是部下太多 ...

  3. JS判断在哪一端浏览器打开

    <script src="js/jquery-2.2.3.min.js"></script> <script> var browser = { ...

  4. 分布式TensorFlow集群local server使用详解

    通过local server理解分布式TensorFlow集群的应用与实现. ​​简介 TensorFlow从0.8版本开始,支持分布式集群,并且自带了local server方便测试. Local ...

  5. H3C DCC拨号配置任务

  6. 清除SVN未版控文件

    用Git时,git clean -df 可以清除所有没有add的文件,得到一个干净的工作空间. 用SVN没有这样的命令,当然可以 svn export 得到一个干净的工作空间,但会花很长时间,而且没有 ...

  7. HDU 6709“Fishing Master”(贪心+优先级队列)

    传送门 •参考资料 [1]:2019CCPC网络选拔赛 H.Fishing Master(思维+贪心) •题意 池塘里有 n 条鱼,捕捉一条鱼需要花费固定的 k 时间: 你有一个锅,每次只能煮一条鱼, ...

  8. P1062 差K素数对

    题目描述 给你两个数 n 和 k ,请求出所有小于等于 n 的相差为 k 的素数对. 输入格式 两个正整数n,k.1<=k<=n<=10000. 输出格式 所有小于等于n的素数对.每 ...

  9. H3C 路由优先级

  10. the password has expired

    Oracle提示错误消息ORA-28001: the password has expired,是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月 ...