
倍增
zwjdd_qwq
这个作者很懒,什么都没留下…
展开
-
天天爱跑步 (NOIP2016)LCA+桶
并没有参加NOIP2016,不过仍然听说过这题的威名,今日一见,果然不凡操蛋暴力分给的很足,但是暴力写完了,离正解也不远了25 分维护一下父亲,每条路径暴力跳就好了40 分对于链式,我们思考一下,怎么跑才会产生贡献对于从上往下跑的,只有dist(starti,x)==Wxdist(start_i,x)==W_xdist(starti,x)==Wx才可以被看到稍微改改式子depx−...原创 2019-08-19 17:07:01 · 77 阅读 · 0 评论 -
NOIP2018D2T3 保卫王国
一眼看上去很像动态DP,然而萌新不会,只能看题解写了一个LCA我们看题目要求求的东西,每次给定两个点,必选或者不选,让你求在这情况下的最小权独立集,我们考虑每次必选或者必不选对整体的影响只会影响,他俩到LCA和LCA到根的路径,其他都是可以直接调用的那么我们考虑倍增维护一下每一条链f[i][j][0/1][0/1] 表示在i点向上跳 2^j 步后 选或不选i 和选或不选fa[i][j] 在...原创 2019-08-12 16:51:12 · 285 阅读 · 0 评论 -
洛谷P3295萌萌哒
#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<cstring>#define mod 1000000007using namespace std;const int m...原创 2019-07-29 00:23:40 · 243 阅读 · 0 评论 -
洛谷P2680 运输计划(LCA,树上差分)
我们二分答案,如何check呢我们要使最长的路径最短或者小于一个值,易证一定是使最长的那条路变短那么现在我们要使长度超过mid的路径变短,我们一定是找一条在这几条路径上的公共公共公共边中最大的一条,如果最长边减去该边长度小于mid,就符合,不然就不符合至于怎么统计路径,那就是树上差分的拿手好戏了我们用come[i]表示点i上方边的权值,num[i]表示i点上方边被经过的次数,pick为差分...原创 2019-08-17 22:53:34 · 112 阅读 · 0 评论 -
洛谷P4180 【模板】严格次小生成树[BJWC2010]
rt,模板题思路挺简单,每次找到不在最小生成树的一条边,断开from>tofrom>tofrom>to在树链上不等于该边边权的最大边更新答案就好了,这里主要是注意一定要不等于该边边权,因为严格次小是发方法还是倍增,我们的倍增数组维护最大值和次小值就好了max2[j][i]=max(max2[fa[j][i-1]][i-1],max2[j][i-1]);i...原创 2019-09-13 22:58:03 · 175 阅读 · 0 评论