
树上差分
吴俊达9812
这个作者很懒,什么都没留下…
展开
-
luogu P4556 [Vani有约会]雨天的尾巴
线段树合并+ 树上差分线段树合并的复杂度:两棵线段树节点个数的总和减去合并之后线段树的节点个数。#include <bits/stdc++.h>using namespace std;const int N = 20000005;const int maxn = 100005;const int maxm = 200005;int tree[N][2],ls[N...原创 2019-10-24 20:43:21 · 161 阅读 · 1 评论 -
poj 3417
#include <cstdio>#include <algorithm>using namespace std;typedef long long LL;const int maxn = 100005;const int maxm = 200005;int he[maxn],ver[maxm],tot,ne[maxm],fa[maxn][21],d[maxn...原创 2019-10-23 22:25:06 · 230 阅读 · 0 评论 -
bzoj 3631
树上差分裸题#include<bits/stdc++.h>using namespace std;typedef int lint;const int maxn = 300000 + 5;const int maxm = 600000 + 5;lint a[maxn],ver[maxm],he[maxn],ne[maxm],tot,ans[maxn],val[maxn]...原创 2019-06-21 14:27:13 · 100 阅读 · 0 评论 -
洛谷 P1084
很好的一道思维题。我最开始的思路是判断这个题目是由初始状态以最小的代价和转换为合理的状态。这显然理解错了,因为题目说可以同时移动ORZ。。。然后弄清楚题意后显然是一个二分。贪心性质:越往上走越好。走到1节点的儿子节点的时候如果(该儿子节点的所有点的最小剩余距离)大于儿子节点距离根的距离的2倍的话,那么这个点就可以继续向上走。(这点我没想到啊。。。)我最开始的做法就是剩一个最小的,其...原创 2019-06-21 23:30:15 · 233 阅读 · 0 评论 -
洛谷P1600 天天爱跑步
树上的题有点意思啊这题我最开始的想法是 固定一个观测点i,能观测到的一定是起点距离 i 为 w[ i ] 的点的子集合。问题是这个集合只有一部分的点会经过 i 点,就很烦。。。于是得换个思路,不放固定一个跑步的人 x 观察他对哪些观察者 i 产生了贡献。于是我们得到了公式,对于上升阶段的点来说,不妨设 s 为起点 d[x]+w[x] = d[s]( d为表示深度的数组 )...原创 2019-06-22 14:01:31 · 200 阅读 · 0 评论 -
bzoj 4326运输计划
二分+树上倍增先放一个用倍增法求解树上距离的方法,我最开始又犯了那个错误这段我最开始上下又写反了。。。。(记性他就是不进脑子啊。。。再错我TM是dog)#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef int lint;typedef pair<lint,l...原创 2019-06-22 16:49:33 · 144 阅读 · 0 评论 -
Gym102012 - 2018徐州 - G - Rikka with Intersections of Paths
这题我一开始的思路是,对于点相交的集合,直接统计即可。对于边相交的集合。不妨算作为这条边深度最大的点的贡献。尼玛,这明显有重啊,我是智障吗。。。所以正解是对于边相交的集合。算作为这条边深度最小的点的贡献。等下,又坑: (x - y) % mod是错误的,正确应写成 ( x-y+mod )%mod#include<bits/stdc++.h>using ...原创 2019-06-22 19:36:21 · 407 阅读 · 0 评论 -
洛谷 P2664 树上游戏
#include <bits/stdc++.h>using namespace std;typedef long long lint;typedef long long LL;const lint maxn = 200000 + 5;const lint maxm = 400000 + 5;const lint inf = 0x3f3f3f3f3f;lint vis[m...原创 2019-07-12 18:37:40 · 190 阅读 · 0 评论