这题放过了暴力其实就没啥意思了

虽然暴力复杂度很玄学,但是思维水平确实没啥

Description

link

题意概述:现在有一条长度为 \(n\) 的链,有些边是有限制的

限制为能到某个点,才能经过这条边

给定多组询问,看给定的起始点 \(S\) 是否可以到达 \(T\)

\(n \leq 10^6\)

Solution

\[Begin
\]

还是比较好看出来这个题要预处理每一个点的可达区间 \([\space l_i,r_i \space ]\)

先缩点,就是在没有钥匙的情况下每个点的左右可达

考虑我们怎么在比较短的时间内完成这个事情:

一个很愚蠢但是有用的结论:我们达到了一个点 \(i\) 就可以达到区间 \([\space l_i,r_i \space ]\)

这个玩意好像很单调,然后就\(dfs\)就可以完成预处理了……

我其实感觉这玩意有点像什么单调数据结构,或者就是个记忆化搜索……

\[QED
\]

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 游戏的更多相关文章

  1. 【BZOJ5285】[HNOI2018]寻宝游戏(神仙题)

    [BZOJ5285][HNOI2018]寻宝游戏(神仙题) 题面 BZOJ 洛谷 题解 既然是二进制按位的运算,显然按位考虑. 发现这样一个关系,如果是\(or\)的话,只要\(or\ 1\),那么无 ...

  2. 5285: [Hnoi2018]寻宝游戏

    5285: [Hnoi2018]寻宝游戏 链接 分析: 从下面依次确定运算符号,然后在确定的过程中,需要确定的位数会逐渐减少.比如最后有一个1,如果在从下往上确定了一个or 1,那么再往前可以随便选了 ...

  3. 「HNOI2018」游戏

    「HNOI2018」游戏 解题思路 首先没有锁上的门可以缩点缩掉,然后对于一扇锁上的门,如果钥匙在左边,那么右边就永远不可能到达左边,同理如果钥匙在右边,左边就永远不可能到达右边. 然后考虑一个暴力的 ...

  4. loj #2508. 「AHOI / HNOI2018」游戏

    #2508. 「AHOI / HNOI2018」游戏 题目描述 一次小 G 和小 H 在玩寻宝游戏,有 nnn 个房间排成一列,编号为 1,2,…,n,相邻房间之间都有 111 道门.其中一部分门上有 ...

  5. 【题解】Luogu P4436 [HNOI/AHOI2018]游戏

    原题传送门 \(n^2\)过百万在HNOI/AHOI2018中真的成功了qwqwq 先将没门分格的地方连起来,枚举每一个块,看向左向右最多能走多远,最坏复杂度\(O(n^2)\),但出题人竟然没卡(建 ...

  6. BZOJ.5285.[AHOI/HNOI2018]寻宝游戏(思路 按位计算 基数排序..)

    BZOJ LOJ 洛谷 话说vae去年的专辑就叫寻宝游戏诶 只有我去搜Mystery Hunt和infinite corridor了吗... 同样按位考虑,假设\(m=1\). 我们要在一堆\(01\ ...

  7. [洛谷P4436] HNOI/AHOI2018 游戏

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

  8. bzoj 5285: [Hnoi2018]寻宝游戏

    Description Solution 把输入的 \(n\) 个二进制数看作一个大小为 \(n*m\) 的矩阵 把每一列压成一个二进制数,其中最高位是最下面的元素 然后就有了 \(m\) 个二进制数 ...

  9. HNOI2018寻宝游戏

    https://www.luogu.org/problemnew/show/P4424 题解 我们首先按位考虑. 如果有一位最终的结果为1,那么我们可以把树的序列看成一个二进制数,先出现的在底位,后出 ...

随机推荐

  1. spring源码 继承AttributeAccessor的BeanDefinition接口

    /** * A BeanDefinition describes a bean instance, which has property values, * constructor argument ...

  2. js如何操作或是更改sass里的变量

    /*上网搜索了好多方法,最终只有这一种比较适合*/ 参考: https://blog.csdn.net/weixin_44392565/article/details/85755592 https:/ ...

  3. Nginx php-fpm 分离搭建 (上) 未完

    最近又重新看了一遍   'nginx入门到精通'      抽点时间 出来搭几个Demo  会有更深体会: Nginx如何与Php-fpm结合 Nginx不只有处理http请求的功能,还能做反向代理. ...

  4. jquery播放mp3

    $("button").on("click",function(){    $('embed').remove();            $('body'). ...

  5. 安卓app测试之Monkey日志分析《转载》

    安卓app测试之Monkey日志分析 链接:https://www.cnblogs.com/wuzm/p/10965762.html

  6. Python 中 使用 HTMLTestRunner 模块生成测试报告

     使用 HTMLTestRunner 模块可以生成测试报告,但是系统自带的报告不详细,不好看,所以找了一份详细的报告 HTMLTestRunner 模板,直接导入就能使用 两种方法生成HTML报告,都 ...

  7. Swift - UISplitViewController

    https://blog.csdn.net/weixin_43704791/article/details/86424080 2019年01月13日 AppDelegate中: func applic ...

  8. Java中多态的实例

    public class cf { /** * 实际上这里涉及方法调用的优先问题, * 优先级由高到低依次为:this.show(O).super.show(O).this.show((super)O ...

  9. 9.1hadoop 内置计数器、自定义枚举计数器、Streaming计数器

    1.1  计数器 计数器的作用是用来统计数量的,用于记录特定事件的次数,分为内置计数器.自定义java枚举计数器.自定义Stream计数器三大类.用于质量分析,或应用级统计.分析计数器的值比分析一堆日 ...

  10. 79.常用的返回QuerySet对象的方法使用详解: filter, exclude,annotate

    返回新的QuerySet的常用方法: 1.filter: 将满足条件的数据提取出来,返回一个新的QuerySet 以下所使用的模型article,category,定义模型models.py文件中,示 ...