摘要: /*参考 https://www.cnblogs.com/LoveYayoi/p/6745541.html https://www.cnblogs.com/George1994/p/7821357.html 以及我校学长的优秀讲解。 */ 树链剖分可以将树剖分成一条一条的链,形成一条新链,然后通过一 阅读全文
posted @ 2018-06-02 20:02 dprswdr 阅读(302) 评论(0) 推荐(0)
摘要: -> 任务A:最少选择多少点能够遍历整张有向图。 任务B:最少添加多少条有向边使整张图变为一个强连通图。 A->先用Tarjan将所有scc缩点,缩点后入度为0的点的个数即为任务A的答案,因为其他点可以由入度为零的点遍历到。 注意: 1、当n=1时,只有一个点,此时任务A的答案为1,任务B的答案为0 阅读全文
posted @ 2018-06-02 10:27 dprswdr 阅读(186) 评论(0) 推荐(0)
摘要: 对于一张图G,若存在一条从S出发到T的路径,使得图中每条边都恰好只经过一次(点可以经过多次!),则该路径为S到T的欧拉路径。 若一条回路(从S出发最终回到S),使得图中每条边都恰好只经过一次,则该路径为图G的一条欧拉回路。 对于存在欧拉回路的无向图,称为欧拉图。 定理1:若无向图中存在欧拉路径,当且 阅读全文
posted @ 2018-06-02 09:01 dprswdr 阅读(183) 评论(0) 推荐(0)
摘要: 传送门 题意:给定一个无向图G,输出一条路径,从1出发最后回到1,并使每条边都恰好从正反各经过一次。若有多解,输出一解即可。 思路:欧拉回路板子。此处采用邻接表做法,若当前遍历到点u的边i,则边i之前的边都已经被遍历过了,为了防止重复遍历造成的时间浪费,每次遍历后将head[u]更新为next[i] 阅读全文
posted @ 2018-06-02 08:42 dprswdr 阅读(120) 评论(0) 推荐(0)
摘要: 传送门 将字母看做点,将相邻字母见看做有连一条无向边,最终判断能否形成一条由n+1个点构成的路径,即是否存在一条欧拉路或欧拉回路。 由于要字典序最小,所以按字典序从小到大遍历,找最小的字母为起点,每次找最小的字母作为下一个点。 由于欧拉(回)路是倒序存储的,所以输出答案时需要倒着输出。 阅读全文
posted @ 2018-06-02 07:50 dprswdr 阅读(132) 评论(0) 推荐(0)
摘要: 传送门 tarjan缩点后进行拓扑dp求出从点i出发的最大点权和,由于是dfs遍历,所以相当于从终点走到点i的最大点权和。 阅读全文
posted @ 2018-06-02 07:46 dprswdr 阅读(118) 评论(0) 推荐(0)
摘要: 传送门 根据题意可知二分图染色。若无法被染成二分图,输出Impossible;反之,对于每个二分图,记录两种颜色的点的个数,取min后记录答案中。 注意,图可能不连通。因此对于每个二分图,都要进行取min操作,而不是对整个图染色后取min。 阅读全文
posted @ 2018-06-02 07:38 dprswdr 阅读(152) 评论(0) 推荐(0)
摘要: 传送门 一.二分+二分图染色 最小的最大,考虑二分。 每次二分影响值,将影响值不小于mid的两个人关进不同的监狱,即染成不同的颜色,分到二分图的两个不同的集合中。若最终形成的图是二分图,说明这种分法可行,影响值还有变小的可能;否则影响值只能更大。 二.并查集 贪心地想,将每对罪犯按影响值从大到小进行 阅读全文
posted @ 2018-06-02 07:25 dprswdr 阅读(150) 评论(0) 推荐(0)