摘要:
一道淀粉质的模版题,开始是暴力 然后我用了二分 虽然还可以更快,但我不想打了 阅读全文
摘要:
对于这道题,明显是点分治,权值等于k,可以用桶统计树上路径(但注意要清空); 对于每颗子树,先与之前的子树拼k,再更新桶,维护t["len"]最小边数; 阅读全文
摘要:
淀粉质 第二道点分治的题 关于点分治的一点理解: 所谓点分治,其实就是把要求的问题(一般与路径有关)划分成两种情况 1.路径经过rt(根节点) 2.路径在根节点的子树内 我们只需要处理情况1,因为情况2就是情况1的递归子问题 在这个过程中,要注意容斥原理的应用; // 关于此题: w可预先%3(不会 阅读全文
摘要:
最简单的点分治 淀粉质的思想: “分而治之”,缩小问题规模,合并求解; 阅读全文
摘要:
https://www.luogu.org/problemnew/show/P304 1 #include <bits/stdc++.h> 2 #define up(i,l,r) for(register int i = (l); i <= (r); ++i) 3 #define dn(i,l,r) 阅读全文
摘要:
1 #include 2 #define up(i,l,r) for(register int i = (l);i = (r); i--) 4 #define ll long long 5 using namespace std; 6 7 const int N = 21000000; 8 int len,ans,r[N i) r[i] = min(r[id*2-i],mx-i... 阅读全文
摘要:
https://loj.ac/problem/10131 树上边差分,需要注意的是cnt[1] == 0 不能算的问题(他实际并未有连0号点) 阅读全文
摘要:
https://www.luogu.org/problemnew/show/P3398 题意简单概括一下就是求树上两条路径是否相交; 有这样一个性质: if相交,则必有lca(a,b) 在路径c <-> d 上or lca(c,d) 在路径a <-> b 上; 接下来就是这样一个问题: 怎样判断一个 阅读全文
摘要:
https://www.luogu.org/problemnew/show/P1967 由题可知,我们走的路的边应尽可能大,所以通过$kruscal$建最大生成树的图,再树上倍增,注意可能有多棵树; 最开始的写法之所以是错误的,是因为会多求一段,而我们只需要求到LCA就行; 阅读全文
摘要:
https://www.luogu.org/problemnew/show/P3258 注意开始和最后结尾 阅读全文