![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
差分
Love_xyh
这个作者很懒,什么都没留下…
展开
-
CF739B Alyona and a tree
我们可以发现,每一个节点,都会向上 对连续的一个节点段中的每个节点产生1的贡献。所以,我们可以对于每个节点先倍增处理出dis<=a[u]的最上面的节点,之后对于这一连续的节点段,差分累加答案。#include <bits/stdc++.h>#define int long longusing namespace std;const int N=2e5+5;int n,u,w;int a[N],d[N],dis[N][21],p[N][21],f[N];int cnt,head原创 2020-08-28 19:51:17 · 111 阅读 · 0 评论 -
BZOJ 1002: [FJOI2007]轮状病毒
首先考虑暴力:#include <bits/stdc++.h>using namespace std;const int N=105;int n,cnt,ans;int a[N],f[N];struct number{int x,y;}num[N];int find(int x){ if (f[x]==x) return x; return f[x]=find(f...原创 2019-11-19 18:16:11 · 112 阅读 · 0 评论 -
[POI2011]MET-Meteors
单调性是显然的,暴力也是显然的:即对于每个国家都进行一次二分答案。复杂度:nm logn考虑对于一整段连续的国家整体二分。在solve的过程中,对于1-mid次陨星雨增加的值,用线段树或树状数组来维护。进行区间累加以后,判断每一个国家是否能在前mid次陨星雨以后收集到相应的陨星。对于能与不能,分别放在左右区间,进行下一步递归。这里注意两个小优化:1.区间修改单点查询的线段树,可以利用差分思想后用树状数组维护。2.对于每次solve,不用一遍又一遍地把1-mid次陨星雨都重新累加一遍。对于之前mid原创 2020-08-05 18:55:09 · 149 阅读 · 0 评论 -
LCA模板解释与树上差分介绍
倍增求LCA对于树上求两个节点的最小公共祖先,很明显,可以通过从这两个点一步步往上走,得到一个相同的节点,那么这个节点就是所要求的最小公共祖先了。但是,这种暴力,明显会T。那么,既然我们可以通过一步步往上爬,是不是也可以两步两步往上爬,三步三步,甚至一百步一百步呢?记得杰伦有首歌叫《蜗牛》-----我要一步一步往上爬既然有这样一种一次往上爬多步的思想在了,那么,距离一次是爬几步呢?我们发现,...原创 2019-05-06 20:01:21 · 208 阅读 · 0 评论