【题解】Luogu P4436 [HNOI/AHOI2018]游戏
原题传送门
\(n^2\)过百万在HNOI/AHOI2018中真的成功了qwqwq
先将没门分格的地方连起来,枚举每一个块,看向左向右最多能走多远,最坏复杂度\(O(n^2)\),但出题人竟然没卡(建议JSOI的出题人好好学学)
#include <bits/stdc++.h>
#define N 1000005
#define getchar nc
using namespace std;
inline char nc(){
static char buf[100000],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline int read()
{
register int x=0,f=1;register char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*f;
}
int n,m,q;
int a[N],is[N],vis[N],l[N],r[N];
inline void dfs(register int x)
{
if(vis[x])
return;
int L=x,R=x,ok;
do{
ok=0;
if(L<=a[L-1]&&a[L-1]<=R)
{
ok=1;
dfs(L-1);
L=l[L-1];
}
if(L<=a[R]&&a[R]<=R)
{
ok=1;
dfs(R+1);
R=r[R+1];
}
}while(ok);
l[x]=L,r[x]=R;
vis[x]=1;
}
int main()
{
n=read(),m=read(),q=read();
for(register int i=1;i<=m;++i)
{
int x=read(),y=read();
a[x]=y;
}
is[1]=1;
for(register int i=1;i<=n;++i)
{
is[i+1]=is[i];
if(a[i])
++is[i+1];
}
++m;
for(register int i=1;i<=n;++i)
if(a[i])
a[is[i]]=is[a[i]];
for(register int i=1;i<=m;++i)
dfs(i);
while(q--)
{
int x=is[read()],y=is[read()];
if(l[x]<=y&&y<=r[x])
puts("YES");
else
puts("NO");
}
return 0;
}
【题解】Luogu P4436 [HNOI/AHOI2018]游戏的更多相关文章
- Luogu P4436 [HNOI/AHOI2018]游戏
题目 我们要求出\(l_i,r_i\)表示\(i\)最远能够到达的最左边和最右边的格子. 首先有一个比较简单的暴力,就是每次我们选择一个格子,然后从当前格子开始往左右暴力扩展,找到能够到达的最远的格子 ...
- [洛谷P4436] HNOI/AHOI2018 游戏
问题描述 一次小G和小H在玩寻宝游戏,有n个房间排成一列,编号为1,2,...,n,相邻的房间之间都有一道门.其中一部分门上锁(因此需要有对应的钥匙才能开门),其余的门都能直接打开.现在小G告诉了小H ...
- BZOJ5288 & 洛谷4436 & LOJ2508:[HNOI/AHOI2018]游戏——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5288 https://www.luogu.org/problemnew/show/P4436 ht ...
- 【题解】Luogu P4438 [HNOI/AHOI2018]道路
原题传送门 实际就是一道简单的树形dp 设f[u][i][j]表示从根结点到结点u经过i条未翻修公路,j条未翻修铁路的贡献最小值 边界条件:f[leaf][i][j]=(A+i)(B+j)C (题目上 ...
- [HNOI/AHOI2018]游戏
题目描述 https://lydsy.com/JudgeOnline/upload/201804/%E6%B9%96%E5%8D%97%E4%BA%8C%E8%AF%95%E8%AF%95%E9%A2 ...
- luogu P4437 [HNOI/AHOI2018]排列
luogu 问题本质是把\(a_i\)作为\(i\)的父亲,然后如果有环就不合法,否则每次要取数,要满足取之前他的父亲都被取过(父亲为0可以直接取),求最大价值 贪心想法显然是要把权值大的尽量放在后面 ...
- BZOJ5288 HNOI/AHOI2018游戏
首先将之间没有锁的房间合并.显然可达性具有传递性和反交换律(即若a能到达b,则b不能到达a). 考虑对每个房间找到其左右第一个(即与其最接近的)能作为起点到达它的房间.如果能求出这个,对此建两棵树,问 ...
- Luogu 4438 [HNOI/AHOI2018]道路
$dp$. 这道题最关键的是这句话: 跳出思维局限大胆设状态,设$f_{x, i, j}$表示从$x$到根要经过$i$条公路,$j$条铁路的代价,那么对于一个叶子结点,有$f_{x, i, j} = ...
- Luogu P4426 [HNOI/AHOI2018]毒瘤
题目 神仙题. 首先我们可以把题意转化为图的独立集计数.显然这个东西是个NP-Hard的. 然后我们可以注意到\(m\le n+10\),也就是说最多有\(11\)条非树边. 我们现在先考虑一下,树上 ...
随机推荐
- [daily][netcat] 在UNIX socket上使用netcat
概述 默认情况下,系统里边带的netcat,也就是nc.支持tcp,udp,ipv4,ipv6但是不支持unix socket. 而且,telnet也不支持. 除非自己写一个,不然很不方便. 另一个n ...
- python 数据分析算法(决策树)
决策树基于时间的各个判断条件,由各个节点组成,类似一颗树从树的顶端,然后分支,再分支,每个节点由响的因素组成 决策树有两个阶段,构造和剪枝 构造: 构造的过程就是选择什么属性作为节点构造,通常有三种节 ...
- linux查看所有用户信息
所有的用户信息在根目录/etc/中passwd文件内,而passwd的所有权限是root用户及root组用户,所有想要查看所有用户,需要root用户登录系统. root用户登录后,可以直接用查看命令c ...
- webpack摸索笔记
上一个链接,入门webpack看这篇文章最好:https://segmentfault.com/a/1190000006178770 1.先安装好node 2.建个项目文件 3,.window+r,打 ...
- numpy(二)
通用函数: np.add 加 np.subtract 减 np.multiply 乘 np.divide 除 np.floor_divide 地板乘除法,取商 np.power 指数运算 ...
- 【MySQL】sort by then group by
tb: ### 需求:根据id进行分组,找到分组内hour中最大的一项 错误写法: select id, max(hour) from tb group by id; 正确的写法: ### 需求:根据 ...
- [LeetCode] 70. Climbing Stairs_ Easy tag: Dynamic Programming
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...
- 5分钟安装 关于win10安装composer PHP 用来管理依赖(dependency)关系的工具
1.在你的phpstudy或者wamp中开启extension=php_openssl.dll扩展 (php配置文件)并配置好php的环境变量 2.在与你安装phpstudy和wamp不一样的盘中创建 ...
- Setting NLS_LANG Value for Oracle
Introduction Many times, when you have an Oracle application and you have to support special charact ...
- oo第一次作业
前言: 这是一篇面向对象作业总结,作业内容是对多项式进行求导,一共有三个阶段,具体要求不详述,第一阶段只要求’+’连接coeff*x^pow的形式,第二次支持*连接的幂函数及三角函数,第三次则需要支持 ...