Processing math: 100%

随笔分类 -  图论

图论学习(在更)
摘要:note: 最小环 是枚举已有的最短路和k点连接的两条边, 保证三个点不重合。 for(R int k = 1; k <= n; k ++) { for(R int i = 1; i < k; i ++) for(R int j = i + 1; j < k; j ++) { if(e[i][j]
245
0
1
JOISC 2016 Day3 电报
摘要:"JOISC 2016 Day3 电报" 前置知识(伪) + 基环树 + 基环外向树 + 基环内向树 此题就是一棵基环外向树。 ~~其实这些都没什么用,跟这题没啥关系~~ 思路 考试的时候不会做,考完才发现自己就差那么一点点... 首先考虑这样一张图: 我们的目的是让整个图成为一个环,但是这显然不是
348
1
0
Luogu P3703 [SDOI2017]树点涂色
摘要:"Luogu P3703 [SDOI2017]树点涂色" 用LCT中每一个Splay维护颜色相同的点集,则从一个点到根节点的轻边的条数就是这个点的到根的权值。至于路径查询的搞个差分就好,用树剖实现。 至于为什么可以直接这样查,是因为LCT里面涉及子树的权值变化只有access函数。在splay中的子
157
0
0
Luogu P3350 [ZJOI2016]旅行者
摘要:"这题正常的题面请看这里" ~~由大佬之言可知,看见网格图想分治~~ 所以这题考虑分治。 考虑把棋盘分成两半,那所有点就会有两种情况: + 在完整的一半以内 + 跨越两半 考虑在我们分成两半的那条中线的所有点跑最短路来更新所有点的答案。然后对于跨越了两半的点就直接保存答案,在同一块的点就类似整体二分
198
0
0
Luogu P2056 [ZJOI2007]捉迷藏
摘要:动态点分治 先建出一颗点分树,然后维护。 对于每一个点维护两个堆,一个堆维护子树内所有点到分治父节点的距离最大值,一个堆维护一个点所有子树的第一个堆的最大值,再全局维护一个堆取所有分治重心的答案的最大值即可。 代码细节感人。。。 一个比较有用的trick就是用两个大根堆实现可删除的堆~~但是要开O2
259
0
0
Luogu P3292 [SCOI2016]幸运数字
摘要:看到异或最值,显然想到线性基。 用树上倍增的方法,维护当前点x到倍增父节点fa[x][i]这条路径上的线性基,在倍增的时候暴力合并即可。 注意这个线性基的倍增数组是没有包括最后一个点的信息的,需要特殊处理。然后就搞完了。 时间复杂度$O(n log_n log_v+q log_n log_v
256
0
0
Luogu CF555E 【Case of Computer Network】
摘要:其实如果这是一颗树的话很好搞,把slca(s,t) 向上连,lca(s,t)t向下连即可(然而事情并不是这样子的...)。 我们考虑什么样的情况是一定可行的呢?每两个点之间都有两条以上的路径,那就可以一边向前,一边向后,绝对可以。也就是求双联通分量以内是一定可以的,所以考虑缩点。
155
0
0
Luogu P4151 [WC2011]最大XOR和路径
摘要:"原题传送门" 看见异或最值,估计线性基跑不了了。 考虑先随便提出一条从1n的路径,这显然不一定是最优的,但是可以让它变强。比如可以让它中间插入一个环来让它变优。比如说有一条路径: 1ABCN 可以补成: 1ABEFGEBCN 注意到权值的变化其实就是多异
280
0
0
Luogu P6185 【[NOI Online 提高组]序列】
摘要:本来考场切了的,结果代码没保存,爆炸成80,自闭了。 考场上我是一个一个部分分做的,所以这里我也一个一个部分分写。 0pts n=1 这个档位是针对样例写的。。。因为不写我就过不了样例。。。 显然如果有一个1操作就输出YES,没有就看相不相等完事。。。 贴一个没有什么用的代码。 60pts $n
318
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起