摘要:
由题可知,我们要使最长的路径尽可能小,那么就二分最长的路径,把路径按升序排列,使其具有单调性, 然后把所有长度>mid的路径处理出来,进行树上差分,处理出这些路径都经过的最大的边,if maxpath - maxedge > mid then return false; 阅读全文
摘要:
讲解: https://rpdreamer.blog.luogu.org/ci-fen-and-shu-shang-ci-fen 阅读全文
摘要:
总结: 树链剖分版的LCA的dfs1稍有不同,不需要用数组记录每个点的重儿子; 树链剖分维护7个数组,树链剖分——LCA维护4个数组(fa[],dep[],size[],top[])son[]简化成heavyson_id 阅读全文
摘要:
#include #define read read() #define up(i,l,r) for(register int i = (l);i = (r);i--) #define traversal_vedge(i) for(register int i = head[u]; i ;i = e[i].nxt) #define ll long long using namespace st... 阅读全文
摘要:
https://www.luogu.org/problemnew/show/AT2442 阅读全文
摘要:
https://loj.ac/problem/6121 BFS + 状压 写过就好想,注意细节debug 阅读全文
摘要:
https://loj.ac/problem/10072 针对无向图 因为Floyd是按照结点的顺序更新最短路的,所以我们在更新最短路之前先找到一个连接点k,当前的点k肯定不存在于已存在的最短路f[i][j]的路径上,因为我们还没用这个k去更新最短路,相当于 (i -> k -> j -> j到i的 阅读全文
摘要:
https://www.luogu.org/problemnew/show/P1613 思路: 1.读入 2.建图 3.对于每一个点,向距离它 2^k 长度的点连一条长度为 1 的边 4.在新图上跑1~n的最短路 实现 看题解后,发现思路大致正确,但实现有问题; 具体看代码 阅读全文
摘要:
1 #include 2 #define read read() 3 #define up(i,l,r) for(int i = (l);i 57) {if(ch == '-') f = -1; ch = getchar();} 9 while(ch >=48 && ch v; 19 int Get_id(int x) {return lower_bound(v.beg... 阅读全文
摘要:
http://61.139.95.227:82/problem.php?id=1318 线段树区间修改模版 阅读全文