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

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

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();}

最新文章

  1. ORACLE分区表梳理系列(一)- 分区表概述、分类、使用方法及注意事项
  2. 提取postgresql数据库中jsonb列的数据
  3. SSAS 部署失败 总结
  4. STM32F103xx bxCAN(Basic Extended CAN) 滤波机制
  5. iOS开发UI篇—Quartz2D简单使用(三)
  6. com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect
  7. 并查集(HDOJ 1856)
  8. openlayers 注册事件例子
  9. mysql如何更改数据库名(一键实现mysql改数据库名)
  10. GUI创建各常用控件(二)
  11. spring事务配置的坑
  12. hdu 3544 Alice&#39;s Game 博弈论
  13. C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口。
  14. 使用sqlcmd执行连接的时候一直报有语法错误
  15. android开发之调试技巧
  16. [物理学与PDEs]第2章习题13 将 $p$ - 方程组化为守恒律形式的一阶拟线性对称双曲组
  17. python 读取excel文件
  18. ionic2 rc2 添加版本更新自动升级功能
  19. 【转】15个最受欢迎的Python开源框架
  20. CentOS 7 安装、配置、使用 PostgreSQL 10 安装及基础配置

热门文章

  1. 4. 异步多级缓存架构+nginx数据本地化渲染
  2. Create Table操作
  3. NumPy 矩阵库函数
  4. java处理浮点数小数点后几位
  5. POJ 1039:Pipe 计算几何
  6. 51nod1414 冰雕(暴力枚举)
  7. RCE
  8. 解决fixed布局里内容不滚动问题
  9. 201771010123汪慧和《面向对象程序设计Java》第十五周实验总结
  10. python脚本下载 Google Driver 文件