描述
​ IcePrincess_1968 和 IcePrince_1968 长大了,他们开始协助国王 IceKing_1968 管理国内事物。
​ IcePrincess_1968 和 IcePrince_1968 住在一个宁静悠远的王国:IceKingdom —— 飘雪圣域。飘雪圣域有 nn 个城镇,编号 1,2,3…n1,2,3…n。有些城镇之间有道路,且满足任意两点之间有且仅有一条路径。飘雪圣域风景优美,但气候并不是太好。根据 IcePrince_1968 的气候探测仪,将来会发生 qq 场暴风雪。每场暴风雪可以用两个整数 li,rili,ri刻画,表示这场暴风雪之后,只有编号属于[li,ri][li,ri]的城市没有受到暴风雪的影响。
​ 在暴风雪的影响下迅速确定王国的农业生产方案是非常重要的事情。IceKing_1968 认为,一个农业生产地域应该是一个极大连通块,满足每个节点都没有被暴风雪影响。这里极大连通块的定义是:不存在一个不属于该点集的未被暴风雪影响的点与该连通块连通。
​ IcePrincess_1968 要负责算出每次暴风雪后,王国能拥有多少个农业生产地域。注意这里每次暴风雪是独立的,即每次暴风雪过后,直到每个城镇重新焕发生机,下一次暴风雪才会到来。
​ 正如上文所述,IcePrincess_1968 擅长文学但不擅长计算机,于是请你帮忙。
输入
第一行包含两个正整数 n,qn,q,表示 IceKingdom 的城镇个数和暴风雪次数。
​ 第 22 至第 nn 行,每行两个正整数 x,yx,y,表示城镇 xx 和城镇 yy 之间有一条道路。
​ 第 n+1n+1 至第 n+qn+q 行,每行两个正整数 li,rili,ri,描述一场暴风雪,含义如题面所述。
输出
输出文件共有 qq 行,第 ii 行表示在第 ii 场暴风雪之后农业生产地域的个数。
样例输入
4 3
1 2
2 3
2 4
1 2
1 3
3 4
样例输出
1
2
提示
【输入输出样例 1 解释】
​ 第一次询问,只有(1,2)一个连通块。
​ 第二次询问,只有(1,2,3)一个连通块。
​ 第三次询问,有 3 和 4 两个连通块。
【数据规模】
对于 30%的数据:n<=100,q<=100n<=100,q<=100;
对于 50%的数据:n<=2,000,q<=2,000n<=2,000,q<=2,000;
对于 100%的数据:n<=200,000,q<=200,000n<=200,000,q<=200,000,对于所有的暴风雪,li<=rili<=ri。

考试的时候傻了,看完发现这题贼简单

可以发现如果有 n u m num num条边不受暴风雪影响,答案就是 r − l + 1 − n u m r-l+1-num r−l+1−num

不被影响的就是满足 l ≤ u &lt; v ≤ r l\le u&lt;v \le r l≤u<v≤r的边 ( u , v ) (u,v) (u,v)
对一维排序后树状数组随便维护一下就可以了

#include<bits/stdc++.h>
using namespace std;
inline int read(){char ch=getchar();int res=0,f=1;while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}while(isdigit(ch))res=(res<<3)+(res<<1)+(ch^48),ch=getchar();return res*f;
}
const int N=200005;
int tr[N],n,m,ans[N];
struct Str{int l,r,idx;
}e[N],q[N];
inline int lowbit(int x){return x&(-x);
}
inline void update(int p,int k){for(;p<=n;p+=lowbit(p))tr[p]+=k;
}
inline int query(int p,int res=0){for(;p;p-=lowbit(p))res+=tr[p];return res;
}
inline bool comp(const Str&a,const Str&b){return a.r<b.r;
}
int main(){n=read(),m=read();for(int i=1;i<n;i++){e[i].l=read(),e[i].r=read();if(e[i].l>e[i].r)swap(e[i].l,e[i].r);}for(int i=1;i<=m;i++){q[i].l=read(),q[i].r=read(),q[i].idx=i;}sort(e+1,e+n,comp),sort(q+1,q+m+1,comp);int j=1;for(int i=1;i<=m;i++){while(q[i].r>=e[j].r&&j<n)update(e[j].l,1),j++;int tmp=query(q[i].r)-query(q[i].l-1);ans[q[i].idx]=q[i].r-q[i].l+1-tmp;}for(int i=1;i<=m;i++)cout<<ans[i]<<'\n';
}

【提高测试】飘雪圣域(树状数组)相关推荐

  1. 飘雪圣域 [树状数组(二维偏序)]

    飘 雪 圣 域 飘雪圣域 飘雪圣域 正 解 部 分 \color{red}{正解部分} 正解部分 首 先 要 知 道 : 首先要知道: 首先要知道: 若给定一个区间 [ l , r ] [l, r] ...

  2. [CSP-S模拟测试]:影魔(树状数组+线段树合并)

    题目背景 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万. 千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄. 每一个灵魂,都有着 ...

  3. [树状数组]飘雪圣域

    没找到传送门(这是校内的) 题意:给一棵树,多次询问编号在l到r中的点组成的连通块个数 考试的时候一直在想奇怪的做法,用的都是树上维护的知识(比如已经被某C姓神仙卡掉的虚树+树剖+二分) 其实这道题根 ...

  4. [蓝桥杯][算法提高VIP]分苹果(差分||树状数组)

    题目描述 小朋友排成一排,老师给他们分苹果. 小朋友从左到右标号1-N.有M个老师,每次第i个老师会给第Li个到第Ri个,一共Ri-Li+1个小朋友每人发Ci个苹果. 最后老师想知道每个小朋友有多少苹 ...

  5. 2021.8.14【提高B组模拟6】T3 + P7527 [USACO21OPEN] United Cows of Farmer John (树状数组)

    United Cows of Farmer John 题目传送门 解题思路 树状数组乱糊 AC代码 #include<cstdio> #include<cstring> usi ...

  6. 【洛谷】NOIP提高组模拟赛Day2【动态开节点/树状数组】【双头链表模拟】

    U41571 Agent2 题目背景 炎炎夏日还没有过去,Agent们没有一个想出去外面搞事情的.每当ENLIGHTENED总部组织活动时,人人都说有空,结果到了活动日,却一个接着一个咕咕咕了.只有不 ...

  7. [队内测试Day10.12]贪心+状压+分块+树状数组

    T1 codevs2169零用钱 正解贪心. 在使用钞票最少前提下保证浪费的钱数最少 保证第一条,在还没达到规定钱数时尽可能使用大面值钞票 保证第二条,在现有钞票不满足要求前提下,尽量选面值小的放 综 ...

  8. b+树时间复杂度_前端大神用的学习笔记:线段树和树状数组

    全文篇幅较长,细心理解一定会有收获的♪(^∇^*). 1|0线段树 1|1一些概念     线段树是一种二叉搜索树,每一个结点都是一个区间(也可以叫作线段,可以有单点的叶子结点),有一张比较形象的图如 ...

  9. 树状数组的理解(前缀和 and 差分)

    二更-- 有神仙反映数星星那个题外链炸了,我决定把图给你们粘一下,汉语翻译的话在一本通提高篇的树状数组那一章里有,同时也修改了一些汉语语法的错误 这段时间学了线段树组,当神仙们都在学kmp和hash的 ...

最新文章

  1. 如何结合因果与强化学习?看最新《因果强化学习:动机,概念,挑战与应用》报告,85页ppt...
  2. 如何能够得到灵敏度更高的150kHz导航信号检测板?
  3. 我的Java设计模式-工厂方法模式
  4. 3梅林刷官改变砖_陶瓷透水砖的四大明显优势
  5. 太原理工软件学院c语言2020,太原理工软件工程C语言实验报告 数组.doc
  6. 什么是僵尸进程与孤儿进程
  7. HTML5中本地数据库(SQLLite)的基础
  8. python爬虫源码项目_32个Python爬虫实战项目,满足你的项目慌(带源码)
  9. oracle 数据库备份
  10. linux下生成静态库和动态库
  11. ubuntu 11.10下载和编译Android源码
  12. ******“伪装”七夕传情网页
  13. How to monitor mongodb replica set using prometheu
  14. 云小课|3种常用Git工作流推荐
  15. 表哥的Access入门++以Excel视角快速学习数据库知识pdf
  16. 关于材料设计vector矢量图形
  17. 二维最大类间方差阈值分割的快速迭代算法
  18. minikube start命令的国内使用方法
  19. vue 自动播放语音
  20. win10小娜_这个版本的win10系统不到10G,运行比win7还流畅,低配电脑的福音

热门文章

  1. 入手评测 华为2021款MatePad Pro 10.8和12.6的区别
  2. java短信内容加链接_Java加腾讯云实现短信验证码功能
  3. 近200篇机器学习深度学习资料分享
  4. php开发与应用,PHP开发与应用_大作业_模板
  5. access下如何配置两个vlan_局域网中交换机建立多个VLAN实例
  6. 用turtle画国旗
  7. Flutter 基础(三)布局
  8. 古月居深度评测Transbot ROS机器人,快来看看古月老师怎么说的吧
  9. 【阿冈建议】三强还是谢幕,历娜你都可以这么唱!
  10. 罗马复兴各民族兵种详细参数——巴比伦篇