#2508. 「AHOI / HNOI2018」游戏

题目描述

一次小 G 和小 H 在玩寻宝游戏,有 nnn 个房间排成一列,编号为 1,2,…,n,相邻房间之间都有 111 道门。其中一部分门上有锁(因此需要对应的钥匙才能开门),其余的门都能直接打开。

现在小 G 告诉了小 H 每把锁的钥匙在哪个房间里(每把锁有且只有一把钥匙),并作出 ppp 次指示:第 iii 次让小 H 从第 SiS_iS​i​​ 个房间出发,去第 TiT_iT​i​​ 个房间寻宝。但是小 G 有时会故意在指令里放入死路,而小 H 也不想浪费多余的体力去尝试,于是想事先调查清楚每次的指令是否存在一条通路。

你是否能为小 H 作出解答呢?

输入格式

第一行三个整数nnn,mmm,ppp,代表共有 nnn 个房间,mmm 道门上了锁,以及 ppp 个询问。

接下来 mmm 行每行有两个整数xxx,yyy,代表第 xxx 到第 x+1x + 1x+1 个房间的门上有把锁,并且这把锁的钥匙被放在了第 yyy 个房间里。输入保证 xxx 不重复。

接下来 ppp 行,其中第 iii 行是两个整数 SiS_iS​i​​,TiT_iT​i​​,代表一次询问。

输出格式

输出 mmm 行,每行一个大写的 YES 或 NO 分别代表能或不能到达。

样例

样例输入 1

5 4 5
1 3
2 2
3 1
4 4
2 5
3 5
4 5
2 1
3 1

样例输出 1

YES
NO
YES
YES
NO

样例解释 1

第一个询问 S=2S = 2S=2、T=5T = 5T=5 的一条可行路线是:2→3→2→1→2→3→4→52 \rightarrow 3 \rightarrow 2 \rightarrow 1 \rightarrow 2 \rightarrow 3 \rightarrow 4 \rightarrow 52→3→2→1→2→3→4→5。

样例输入 2

此组样例满足特性:y≤xy \le xy≤x 恒成立

7 5 4
2 2
3 3
4 2
5 3
6 6
2 1
3 4
3 7
4 5

样例输出 2

YES
YES
NO
NO

样例解释 2

第一个询问 222 和 111 房间之间没有锁所以为一条通路。

数据范围与提示

测试点编号 n m 其他特性
1 ≤1000 \le 1000≤1000 ≤1000 \le 1000≤1000
2 ≤1000 \le 1000≤1000 ≤1000 \le 1000≤1000
3 ≤105 \le 10^5≤10​5​​ ≤105 \le 10^5≤10​5​​ y≤xy \le xy≤x 恒成立
4 ≤105 \le 10^5≤10​5​​ ≤105 \le 10^5≤10​5​​ y≤xy \le xy≤x 恒成立
5 ≤105 \le 10^5≤10​5​​ ≤105 \le 10^5≤10​5​​
6 ≤105 \le 10^5≤10​5​​ ≤105 \le 10^5≤10​5​​
7 ≤106 \le 10^6≤10​6​​ ≤106 \le 10^6≤10​6​​ y≤xy \le xy≤x 恒成立
8 ≤106 \le 10^6≤10​6​​ ≤106 \le 10^6≤10​6​​ y≤xy \le xy≤x 恒成立
9 ≤106 \le 10^6≤10​6​​ ≤106 \le 10^6≤10​6​​
10 ≤106 \le 10^6≤10​6​​ ≤106 \le 10^6≤10​6​​

对于所有数据,保证 1≤n,p≤1061 \le n,p \le 10^61≤n,p≤10​6​​,0≤m<n0 \le m < n0≤m<n,1≤x,y,Si,Ti<n1 \le x, y, S_i,T_i < n1≤x,y,S​i​​,T​i​​<n,保证 xxx 不重复。

由于本题输入文件较大,建议在程序中使用读入优化。

/*
一个点能够扩张的区间是由它周围的点转移过来的
随机化更新的顺序,每次更新进行左右扩张即可
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<algorithm>
#define maxn 1000010
using namespace std;
int n,L[maxn],R[maxn],p[maxn],rd[maxn];
int qread(){
int i=,j=;
char ch=getchar();
while(ch<''||ch>''){if(ch=='-')j=-;ch=getchar();}
while(ch<=''&&ch>=''){i=i*+ch-'';ch=getchar();}
return i*j;
}
void extend(int i){
bool flag=;
while(flag){
flag=;
while(L[i]> && (p[L[i]-]==||(L[i]<=p[L[i]-]&&p[L[i]-]<=R[i])))
flag=,L[i]=min(L[i],L[L[i]-]),R[i]=max(R[i],R[R[i]-]);
while(R[i]<n && (p[R[i]]==||(L[i]<=p[R[i]]&&p[R[i]]<=R[i])))
flag=,L[i]=min(L[i],L[L[i]+]),R[i]=max(R[i],R[R[i]+]);
}
}
int main(){
srand(time());
int m,q,x,y;
n=qread();m=qread();q=qread();
for(int i=;i<=m;i++){
x=qread();
p[x]=qread();
}
for(int i=;i<=n;i++)L[i]=R[i]=i;
for(int i=;i<=n;i++)rd[i]=i;
random_shuffle(rd+,rd+n+);
for(int i=;i<=n;i++)extend(rd[i]);
while(q--){
x=qread();y=qread();
if(L[x]<=y&&y<=R[x])puts("YES");
else puts("NO");
}
return ;
}

loj #2508. 「AHOI / HNOI2018」游戏的更多相关文章

  1. 【LOJ】#2508. 「AHOI / HNOI2018」游戏

    题解 把没有门的点缩成一个点 如果\(i->i + 1\)的钥匙大于\(i\),那么\(i\)不可以到\(i + 1\),连一条\(i\)到\(i + 1\)的边 如果\(i->i + 1 ...

  2. Loj #2494. 「AHOI / HNOI2018」寻宝游戏

    Loj #2494. 「AHOI / HNOI2018」寻宝游戏 题目描述 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得 ...

  3. Loj #2495. 「AHOI / HNOI2018」转盘

    Loj #2495. 「AHOI / HNOI2018」转盘 题目描述 一次小 G 和小 H 原本准备去聚餐,但由于太麻烦了于是题面简化如下: 一个转盘上有摆成一圈的 \(n\) 个物品(编号 \(1 ...

  4. loj #2510. 「AHOI / HNOI2018」道路

    #2510. 「AHOI / HNOI2018」道路 题目描述 W 国的交通呈一棵树的形状.W 国一共有 n−1 个城市和 nnn 个乡村,其中城市从 111 到 n−1 编号,乡村从 111 到 n ...

  5. loj #2509. 「AHOI / HNOI2018」排列

    #2509. 「AHOI / HNOI2018」排列   题目描述 给定 nnn 个整数 a1,a2,…,an(0≤ai≤n),以及 nnn 个整数 w1,w2,…,wn.称 a1,a2,…,an 的 ...

  6. @loj - 2496@ 「AHOI / HNOI2018」毒瘤

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 从前有一名毒瘤. 毒瘤最近发现了量产毒瘤题的奥秘.考虑如下类型的 ...

  7. loj#2510. 「AHOI / HNOI2018」道路 记忆化,dp

    题目链接 https://loj.ac/problem/2510 思路 f[i][a][b]表示到i时,公路个数a,铁路个数b 记忆化 复杂度=状态数=\(nlog^2n\) 代码 #include ...

  8. loj#2509. 「AHOI / HNOI2018」排列(思维题 set)

    题意 题目链接 Sol 神仙题Orz 首先不难看出如果我们从\(a_i\)向\(i\)连一条边,我们会得到以\(0\)为根的树(因为每个点一定都有一个入度,出现环说明无解),同时在进行排列的时候需要保 ...

  9. loj#2020 「AHOI / HNOI2017」礼物 ntt

    loj#2020 「AHOI / HNOI2017」礼物 链接 bzoj没\(letex\),差评 loj luogu 思路 最小化\(\sum\limits_1^n(a_i-b_i)^2\) 设改变 ...

随机推荐

  1. springboot成神之——Basic Auth应用

    本文介绍Basic Auth在spring中的应用 目录结构 依赖 入口DemoApplication 验证Authenication 配置WebSecurityConfig 控制器TestContr ...

  2. latex中如何引用公式

    在使用latex编辑文章时,经常会需要引用公式.图表等等. 如果我们人为地对这些公式.图表进行编号1-2-3-4,然后在文章中使用Eq(1)-Eq(2)-Eq(3)-Eq(4)去引用这些公式,固然是可 ...

  3. ADO.NET连接池

    池:理解为一堆集合,一堆数组,一堆对象ado.net连接池,连接字符串注明Pooling=false关闭连接池 web应用是肯定要启动连接池的,因为默认启动,可以不用管,知道这么一回事就OK了当启动连 ...

  4. 下载tomcat安装版

    1.我们首先在浏览器的地址栏中输入下载地址,如下: Tomcat下载网站链接:http://tomcat.apache.org/ 大家注意:以上下载链接中以zip或gz结尾的都是免安装版的,我们要下载 ...

  5. 设置MongoDB课程环境

    Setting Up Your Course Environment This course is designed to be very hands on. Virtually all of the ...

  6. 932F Escape Through Leaf

    传送门 题目大意 https://www.luogu.org/problemnew/show/CF932F 分析 我们可以从叶子向根每次插入b和ans 所以我们不难发现就是相当于插入线段 于是李超树+ ...

  7. Python基础 之 int、bool、str、列表、元组、字典

    数据类型 数据类型划分:可变数据类型     不可变数据类型 不可变数据类型:元组.bool.int (本身不可更改).str      (可哈希) 可变数据类型:列表list.字典dict   .集 ...

  8. 第二章启程前的认知准备,2.1Opencv官方例程引导与赏析

    1.在opencv安装目录下,可以找到opencv官方提供的示例代码,具体位于...\opencv\sources\samples目录下,如下所示 名为c的文件夹存放着opencv1.0等旧版本的示例 ...

  9. 【原创测试】MongoDB千万级插入数据测试(MMO在线游戏应用场合)

    一.筹备 我们要做一次千万级的MONGODB测试,操作系统选用CentOS 5.5 64位版,基本模拟实际的使用环境,采用单机集群模型(测试单机多CPU情况下的实际效果). 测试基准数据: 服务器配置 ...

  10. File类中的list()和listFiles()方法

    list()方法是返回某个目录下的所有文件和目录的文件名,返回的是String数组 listFiles()方法是返回某个目录下所有文件和目录的绝对路径,返回的是File数组 public class  ...