看上去就很神秘。。。考虑建出图论模型。

我们将一张牌的两面 \(a,b\) 连一条边。

考虑一个连通块的意义是什么。

边是一张牌,容易发现,如果连通块是一棵树,那么选择一个根节点相当于可以打出除了根节点以外的所有牌。

如果连通块不是树,那么所有数都可以被打出。

容易发现,如果一个区间的一个子集全部都在一个连通块中,且这个连通块是一棵树,那么这个区间就寄了。

所以我们对每棵树维护两个值:所在连通块的最大值和最小值。

如果有一个区间被询问区间所包含,那么这个区间就寄了。

只需要做一个二维数点即可。CDQ和主席树都行。

实际上?

我们对于一对 \((mi,mx)\),我们令 \(a[mx]=mi\),然后做一个前缀 \(\max\),如果 \(l\leq a[r]\),那么就寄了,否则没有寄掉。

复杂度 \(O(n\alpha(n)+m)\)。

#include<cstdio>
const int M=1e5+5;
int n,k,a[M],f[M],mx[M],mi[M],siz[M];bool vis[M];
inline int max(const int&a,const int&b){
return a>b?a:b;
}
inline int min(const int&a,const int&b){
return a>b?b:a;
}
inline int Find(const int&u){
return f[u]==u?u:f[u]=Find(f[u]);
}
inline void Merge(int u,int v){
if((u=Find(u))==(v=Find(v)))return vis[u]=true,void();
if(siz[u]>siz[v])siz[f[v]=u]+=siz[v],mx[u]=max(mx[u],mx[v]),mi[u]=min(mi[u],mi[v]),vis[u]|=vis[v];
else siz[f[u]=v]+=siz[u],mx[v]=max(mx[v],mx[u]),mi[v]=min(mi[v],mi[u]),vis[v]|=vis[u];
}
signed main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;++i)siz[f[i]=i]=1,mi[i]=mx[i]=i;
for(int i=1;i<=k;++i){
int u,v;scanf("%d%d",&u,&v);Merge(u,v);
}
for(int i=1;i<=n;++i)if(!vis[i]&&f[i]==i)a[mx[i]]=mi[i];
for(int i=2;i<=n;++i)a[i]=max(a[i],a[i-1]);
scanf("%d",&k);
for(int i=1;i<=k;++i){
int l,r;scanf("%d%d",&l,&r);
printf(l<=a[r]?"No\n":"Yes\n");
}
}

BSOJ6388题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. HTML 代码复用

    前言 通常我们所做的一些页面,我们可以从设计图里面看出有一些地方是相同的.例如:头部,底部,侧边栏等等.如果是制作静态页面的同学,对于这些重复的部分只能够通过复制粘贴到新的页面来,如果页面的数量上去了 ...

  2. 有了Autolayout的UILabel

    在没有Autolayout之前,UILabel的文字内容总是居中显示,导致顶部和底部会有一大片空缺区域 有Autolayout之后,UILabel的bounds默认会自动包住所有的文字内容,顶部和底部 ...

  3. 什么是Autolayout

    Autolayout是一种"自动布局"技术,专门用来布局UI界面的 Autolayout自iOS 6开始引入,由于Xcode 4的不给力,当时并没有得到很大推广 自iOS 7(Xc ...

  4. Python—经典练手题目汇总

    Python-经典练手题目汇总 # 1.有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两# 个,问几天以后能卖完? day=0 xg=1020 for i in rang ...

  5. Ubuntu18 用新用户登录后退格键/方向键/制表键 乱码

    Ubuntu18新建用户后,用新用户登录,此时 退格键Backspace 变成了 ^H,且方向键.制表键.Del键等均失效 这样会造成很多的麻烦,解决方式有两种: 方式1:Ctrl + Backspa ...

  6. SQL代码规范

    1.  建表规约 1)   表中字段名称 a)    表达是否概念的字段,必须使用is_xxx的方式命名,数据类型是bit b)    小数类型为decimal,禁止使用float和double. 说 ...

  7. centos安装MySQL问题

    使用sudo yum install mysql-server出现没有可用软件包 mysql-server. 先 执行 wget http://repo.mysql.com/mysql-communi ...

  8. 13、Linux基础--grep、sed、awk三剑客综合运用

    考试 1.找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写 [root@localhost ~]# grep -E '^[sS]' /proc/meminfo [root@l ...

  9. C++的Copy Elision导致的奇怪问题

    最近写设计模式作业的时候, 有一个作业是实现装饰器模式 (Decorator Pattern), 由于我不会 Java, 所以只能用 C++ 来实现 在这个背景下, 会有简单(表意)的几个类, 如下: ...

  10. Solution -「多校联训」签到题

    \(\mathcal{Description}\)   Link.   给定二分图 \(G=(X\cup Y,E)\),求对于边的一个染色 \(f:E\rightarrow\{1,2,\dots,c\ ...