BSOJ6388题解
看上去就很神秘。。。考虑建出图论模型。
我们将一张牌的两面 \(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题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- python-字符串操作分类小结
切片 str[start:end:step] # 包括头,不包括尾巴.step为步长,意思是每隔step-1个元素,取一个字符 [::-1] #反向取字符串,实现字符串的反转 "abcde& ...
- 一行代码轻松修改 Text Field 和 Text View 的光标颜色 — By 昉
众所周知,Text Field 和 Text View 的光标颜色默认都是系统应用的那种蓝色,如图: 而在实际开发中为了让视觉效果更统一,我们可能会想把那光标的颜色设置成和界面色调一致的颜色.其实在 ...
- onclick="func()"和 onclick = "return func()"区别
onclick="func()" 表示只会执行 func , 但是不会传回 func 中之回传值onclick = "return func()" 则是 执行 ...
- Nginx的优化与防盗链
Nginx的优化与防盗链 1.隐藏版本号 2.修改用户与组 3.缓存时间 4.日志切割 5.连接超时 6.更改进程数 7.配置网页压缩 8.配置防盗链 9.fpm参数优化 1.隐藏版本号: 可以使用 ...
- CVE-2021-4034 Linux Polkit本地权限提升漏洞
0x00 前言 公司放假两天,突然一天下午,群里面实验室的大哥发了个通告,就是这个臭名昭著刚爆出来的漏洞.通杀目前市场上大多数Linux操作系统.随后我看到各种微信公众号纷纷发表文章,POC已经出现了 ...
- 『无为则无心』Python基础 — 44、对文件和文件夹的操作
目录 1.os模块介绍 2.查看os模块相关文档 3.os模块常用方法 (1)文件重命名 (2)删除文件 (3)创建文件夹 (4)删除文件夹 (5)获取当前目录 (6)改变默认目录 (7)获取目录列表 ...
- Dubbo扩展点应用之三异步调用
Dubbo不只提供了堵塞式的同步调用,同时提供了异步调用的方式.这种方式主要应用于提供者接口响应耗时明显,消费者端可以利用调用接口的时间去做一些其他的接口调用,利用Future模式来异步等待和获取结果 ...
- 《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 - 下篇(详细教程)
1.简介 今天继续操作Excle,小伙伴或者童鞋们是不是觉得宏哥会介绍第三种工具操作Excle,今天不介绍了,有两种就够用了,其实一种就够用了,今天主要是来介绍如何使用不同的数据类型读取Excel文件 ...
- Zookeeper基础入门
Zookeeper简介 基本概念 Zookeeper是一个开源的分布式协调服务.其设计目标是将那些复杂的容易出错的分布式一致性服务封装起来,以简单的接口提供给用户使用.它是一个典型的分布式数据一致性的 ...
- HTTP攻击与防范-PHP安全配置
实验目的 1.了解PHP攻击带来的危险性. 2.掌握PHP攻击的原理与方法 3.掌握防范攻击的方法 实验原理 由于网站服务器是以单一系统使用者的模式在运行,因此这个系统的使用者账号必须能够读取每个使用 ...