【JZOJ6285】飘雪圣域
description

analysis
从求联通块出发根本没做法,于是考虑连通块里面的边
对于一个询问\([l,r]\),一条边的左端点\(≥l\)且右端点\(≤r\)才在这个区间的点之间
于是对于边和询问排序,依次把边加入树状数组,然后查询当前询问区间里的边条数就知道了联通块个数
code
#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAXN 200005
#define ll long long
#define reg register ll
#define fo(i,a,b) for (reg i=a;i<=b;++i)
#define fd(i,a,b) for (reg i=a;i>=b;--i)
using namespace std;
ll tr[MAXN];
ll n,q;
struct edge
{
ll x,y;
}a[MAXN];
struct inquiry
{
ll x,y,z,ans;
}b[MAXN];
inline ll read()
{
ll x=0,f=1;char ch=getchar();
while (ch<'0' || '9'<ch){if (ch=='-')f=-1;ch=getchar();}
while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
inline ll lowbit(ll x){return x&(-x);}
inline bool cmp(edge a,edge b){return a.y<b.y;}
inline bool cmpp(inquiry a,inquiry b){return a.y<b.y;}
inline bool cmppp(inquiry a,inquiry b){return a.z<b.z;}
inline void modify(ll x,ll y){while (x<=n)tr[x]+=y,x+=lowbit(x);}
inline ll query(ll x){ll y=0;while (x)y+=tr[x],x-=lowbit(x);return y;}
inline ll get(ll x,ll y){return query(y)-query(x-1);}
int main()
{
freopen("icekingdom.in","r",stdin);
//freopen("icekingdom.out","w",stdout);
n=read(),q=read();
fo(i,1,n-1)
{
ll x=read(),y=read();
a[i].x=min(x,y),a[i].y=max(x,y);
}
sort(a+1,a+n,cmp);
fo(i,1,q)b[i].x=read(),b[i].y=read(),b[i].z=i;
sort(b+1,b+q+1,cmpp);ll j=1;
fo(i,1,q)
{
while (j<n && b[i].y>=a[j].y)modify(a[j++].x,1);
b[i].ans=b[i].y-b[i].x+1-get(b[i].x,b[i].y);
}
sort(b+1,b+q+1,cmppp);
fo(i,1,q)printf("%lld\n",b[i].ans);
return 0;
}
【JZOJ6285】飘雪圣域的更多相关文章
- 飘雪圣域(icekingdom)
飘雪圣域(icekingdom) 题目描述 IcePrincess_1968 和 IcePrince_1968 长大了,他们开始协助国王 IceKing_1968 管理国内事物. IcePrinces ...
- [CSP-S模拟测试]:飘雪圣域(莫队)
题目描述 $IcePrincess\text{_}1968$和$IcePrince\text{_}1968$长大了,他们开始协助国王$IceKing\text{_}1968$管理国内事物. $IceP ...
- csps模拟测试74梦境,玩具,飘雪圣域题解
题面:https://www.cnblogs.com/Juve/articles/11679226.html 梦境: 其实还是挺水的,排序错了过不了样例,打了个二分图匹配就跑了 #include< ...
- 「10.15」梦境(贪心)·玩具(神仙DP)·飘雪圣域(主席树\树状数组\莫队)
A. 梦境 没啥可说的原题.... 贪心题的常见套路我们坐标以左端点为第一关键字,右端点为第二关键字 然后对于每个转折点,我们现在将梦境中左端点比他小的区间放进$multiset$里 然后找最近的右端 ...
- [考试反思]1015csp-s模拟测试74:压迫
其实同时也是第27,一大片并列的. 真的是越考越烂. T1是个弱化的贪心原题,15分钟拿下没什么可说的. T2打的记忆化搜索,hash_mod太小撞哈希了,50->30 T3,想不到正解,90分 ...
- [CSP-S模拟测试74]题解
A.梦境 如果不用去重一定要用Multiset……挂30分算是出题人手下留情了. 贪心.把点排序,区间按右端点递增排序.依次考虑每个区间,取能选的最靠左的点即可.multiset维护. #includ ...
- 2017了,回家前 "年末" 分享:下雨,飘雪,红包雨,碰撞球,自定义View
(本博客为原创:http://www.cnblogs.com/linguanh/) 目录: 效果展示 感想 代码拆解 开源地址 效果展示 有没有兴趣继续看下去,直接看下"颜值"是第 ...
- css3写出飘雪花特效
大冬天的,飘雪花的特效,你可能要用上了吧.通常情况下用jQuery写飘雪花的特效,但用css3写,其实特别简单,新手一看就懂,那就告别jQuery,用css3轻松搞定飘雪花特效吧! 点击查看特效演示 ...
- 如何在你的blog中添加炫酷的飘雪动画效果
将下面的代码复制到你的设置栏下页眉html代码框中即可 <script> (function($){$.fn.snow=function(options){,maxSize:,newOn: ...
随机推荐
- 分分钟教你学会 ToolBar 的使用(转)
转自:http://blog.csdn.net/itguangit/article/details/52042203 1.和平常一样,新建一个Moudle 在xml布局文件中使用 Toolbar 控件 ...
- codeforces 1A
题目大意: 就是在一块长方形地面上铺瓷砖,然后一共要用多少块瓷砖,一块瓷砖被割开后只能用一次,输入长,宽,以及瓷砖边长,求一共需要多少块瓷砖: 基本思路: 这里有个技巧:就长来说,需要(n+k-1)/ ...
- Failed to bind properties under '' to com.zaxxer.hikari.Hikari DataSource Spring Boot解决方案
Description: Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource: Property: dri ...
- Java 基础 - System.arraycopy() 浅拷贝 深拷贝
ref: https://blog.csdn.net/balsamspear/article/details/85069207 https://blog.csdn.net/balsamspear/ar ...
- springMVC配置文件 的约束
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- vue-element-admin打包后白屏的问题
publicPath: './',
- I. Five Day Couple--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)
题目描述:链接点此 这套题的github地址(里面包含了数据,题解,现场排名):点此 链接:https://www.nowcoder.com/acm/contest/104/H来源:牛客网 题目描述 ...
- goroutine 需要注意的一个小细节
虽然goroutine 是并发执行的,但是它们并不是并行运行的.如果不告诉Go 额外的东西,同一时刻只会有一个goroutine 执行.利用runtime.GOMAXPROCS(n) 可以设置goro ...
- solidity代码
http://www.tryblockchain.org/ 教你如何舒服的看solidity代码 最近智能合约随着区块链技术的发展越发收到广大技术人员的重视! 其中最被看好的以太坊就是一个提供智能合约 ...
- 如何在一个for语句中迭代多个对象(2.7)
如何在一个for语句中迭代多个对象 总结: 并行迭代使用zip(l1, l2, l3) 每次迭代从3个列表里各取一个数据 串行迭代使用itertools.chain(l1, l2, l3) 相当于把3 ...