倍增
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 · 60 阅读 · 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 · 258 阅读 · 0 评论 -
洛谷P3295萌萌哒
#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<cstring> #define mod 1000000007 using namespace std; const int m...原创 2019-07-29 00:23:40 · 201 阅读 · 0 评论 -
洛谷P2680 运输计划(LCA,树上差分)
我们二分答案,如何check呢 我们要使最长的路径最短或者小于一个值,易证一定是使最长的那条路变短 那么现在我们要使长度超过mid的路径变短,我们一定是找一条在这几条路径上的公共公共公共边中最大的一条,如果最长边减去该边长度小于mid,就符合,不然就不符合 至于怎么统计路径,那就是树上差分的拿手好戏了 我们用come[i]表示点i上方边的权值,num[i]表示i点上方边被经过的次数,pick为差分...原创 2019-08-17 22:53:34 · 82 阅读 · 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 · 138 阅读 · 0 评论