HNOI2018/AHOI2018 游戏
这题放过了暴力其实就没啥意思了
虽然暴力复杂度很玄学,但是思维水平确实没啥
Description
题意概述:现在有一条长度为 \(n\) 的链,有些边是有限制的
限制为能到某个点,才能经过这条边
给定多组询问,看给定的起始点 \(S\) 是否可以到达 \(T\)
\(n \leq 10^6\)
Solution
\]
还是比较好看出来这个题要预处理每一个点的可达区间 \([\space l_i,r_i \space ]\)
先缩点,就是在没有钥匙的情况下每个点的左右可达
考虑我们怎么在比较短的时间内完成这个事情:
一个很愚蠢但是有用的结论:我们达到了一个点 \(i\) 就可以达到区间 \([\space l_i,r_i \space ]\)
这个玩意好像很单调,然后就\(dfs\)就可以完成预处理了……
我其实感觉这玩意有点像什么单调数据结构,或者就是个记忆化搜索……
\]
Code
#include<bits/stdc++.h>
using namespace std;
#define int long long
namespace yspm{
inline int read()
{
int res=0,f=1; char k;
while(!isdigit(k=getchar())) if(k=='-') f=-1;
while(isdigit(k)) res=res*10+k-'0',k=getchar();
return res*f;
}
const int N=1e6+10;
int scc[N],a[N],l[N],r[N],vis[N],n,m,T;
inline void dfs(int x)
{
if(vis[x]) return ;
int tl=x,tr=x,fl=0;
while(!fl)
{
if(tl<=a[tl-1]&&a[tl-1]<=tr) fl=1,dfs(tl-1),tl=l[tl-1];
if(tl<=a[tr]&&a[tr]<=tr) fl=1,dfs(tr+1),tr=r[tr+1];
fl=!fl;
}l[x]=tl,r[x]=tr,vis[x]=1; return ;
}
signed main()
{
n=read(); m=read()+1; T=read(); scc[1]=1;
for(int i=1;i<=m-1;++i) a[read()]=read();
for(int i=1;i<=n;++i) scc[i+1]=scc[i]+(bool) a[i];
for(int i=1;i<=n;++i) if(a[i]) a[scc[i]]=scc[a[i]];
for(int i=1;i<=m;++i) dfs(i);
while(T--)
{
int x=scc[read()],y=scc[read()];
puts(l[x]<=y&&y<=r[x]?"YES":"NO");
} return 0;
}
}
signed main(){return yspm::main();}
HNOI2018/AHOI2018 游戏的更多相关文章
- 【BZOJ5285】[HNOI2018]寻宝游戏(神仙题)
[BZOJ5285][HNOI2018]寻宝游戏(神仙题) 题面 BZOJ 洛谷 题解 既然是二进制按位的运算,显然按位考虑. 发现这样一个关系,如果是\(or\)的话,只要\(or\ 1\),那么无 ...
- 5285: [Hnoi2018]寻宝游戏
5285: [Hnoi2018]寻宝游戏 链接 分析: 从下面依次确定运算符号,然后在确定的过程中,需要确定的位数会逐渐减少.比如最后有一个1,如果在从下往上确定了一个or 1,那么再往前可以随便选了 ...
- 「HNOI2018」游戏
「HNOI2018」游戏 解题思路 首先没有锁上的门可以缩点缩掉,然后对于一扇锁上的门,如果钥匙在左边,那么右边就永远不可能到达左边,同理如果钥匙在右边,左边就永远不可能到达右边. 然后考虑一个暴力的 ...
- loj #2508. 「AHOI / HNOI2018」游戏
#2508. 「AHOI / HNOI2018」游戏 题目描述 一次小 G 和小 H 在玩寻宝游戏,有 nnn 个房间排成一列,编号为 1,2,…,n,相邻房间之间都有 111 道门.其中一部分门上有 ...
- 【题解】Luogu P4436 [HNOI/AHOI2018]游戏
原题传送门 \(n^2\)过百万在HNOI/AHOI2018中真的成功了qwqwq 先将没门分格的地方连起来,枚举每一个块,看向左向右最多能走多远,最坏复杂度\(O(n^2)\),但出题人竟然没卡(建 ...
- BZOJ.5285.[AHOI/HNOI2018]寻宝游戏(思路 按位计算 基数排序..)
BZOJ LOJ 洛谷 话说vae去年的专辑就叫寻宝游戏诶 只有我去搜Mystery Hunt和infinite corridor了吗... 同样按位考虑,假设\(m=1\). 我们要在一堆\(01\ ...
- [洛谷P4436] HNOI/AHOI2018 游戏
问题描述 一次小G和小H在玩寻宝游戏,有n个房间排成一列,编号为1,2,...,n,相邻的房间之间都有一道门.其中一部分门上锁(因此需要有对应的钥匙才能开门),其余的门都能直接打开.现在小G告诉了小H ...
- bzoj 5285: [Hnoi2018]寻宝游戏
Description Solution 把输入的 \(n\) 个二进制数看作一个大小为 \(n*m\) 的矩阵 把每一列压成一个二进制数,其中最高位是最下面的元素 然后就有了 \(m\) 个二进制数 ...
- HNOI2018寻宝游戏
https://www.luogu.org/problemnew/show/P4424 题解 我们首先按位考虑. 如果有一位最终的结果为1,那么我们可以把树的序列看成一个二进制数,先出现的在底位,后出 ...
随机推荐
- 实验吧-web-天下武功唯快不破(Python中byte和str的转换)
题目:看看响应头 打开网站,既然已经提示我们看响应头了,那我们就看看呗(习惯bp,也可直接F12查看) 可以看到,响应头部分有个FLAG,而且有提示:please post what you find ...
- 实验吧-隐写术-guess(outguess)
给了一张图片: 看了看属性,没啥东西. 根据题目:guess guess guess不出你就out了 猜测是用outguess,于是上linux,进入outguess文件夹,执行命令:outguess ...
- docker安装出现"Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?"
今天按照这个教程使用WSL安装docker时遇到了个问题: 使用命令:$ docker search mysql 出现:Cannot connect to the Docker daemon at u ...
- POJ 1045:Bode Plot
Bode Plot Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13392 Accepted: 8462 Descri ...
- bugku-Web 文件包含2
打开网页查看源代码,在最上面发现upload.php,于是我们就访问这个文件:http://123.206.31.85:49166/index.php?file=upload.php 发现是让我们上传 ...
- spring boot redis 缓存(cache)集成
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
- vmbox 导入虚拟电脑之后无法上网
先执行 ip addr 查看有没有分配ip 用root执行dhclient -v命令去通过DHCP协议获取一个ip,在下图的最后一行可以看到ip已经分配成功dhclient命令可以用来释放你的电脑的I ...
- opencv python图片编码解码
cv2.imdecode()函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像.cv2.imencode()函数是将图片格式转换(编码)成流数据,赋值到 ...
- HDU-2087 C - 剪花布条(KMP基本)
http://acm.hdu.edu.cn/showproblem.php?pid=2087 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能 ...
- [极客大挑战 2019]Knife
根据题目Knife 猜想尝试用蚁剑连接 http://40b92ebd-5234-40b7-b2e0-3c42fb5ad000.node3.buuoj.cn/?Knife.php 密码:Syc 找到f ...