【BZOJ5288】[HNOI2018]游戏(乱搞?)
【BZOJ5288】【HNOI2018】游戏(乱搞?)
题面
题面自己到洛谷上看把
题解
考场上乱搞拿到了\(90\)分,简直不敢相信。
回家把代码再交了一份直接就\(AC\)了???
\(O(n^2)\)的做法应该很容易想
对于每个点作为起点,暴力向左右两侧拓展,
看看它能够到达的区间就行了。
考虑怎么优化一下,发现如果拓展的时候走到了一个已经拓展完的节点
那么一定能够到达这个点能够到达的左右位置
因此,直接沿着当前点能够到达的最远左右位置跳跃一下,
中间就不用计算了。
我们发现这样很容易卡成\(O(n^2)\)
于是我们倒着做,防止出题人故意卡正着做的
然后我就考场\(90\)分?洛谷/BZOJ AC了??
因为代码是考场代码,所以特别丑陋
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<map>
using namespace std;
#define ll long long
#define RG register
#define MAX 1001000
inline int read()
{
int x=0,t=1;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=-1,ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-48,ch=getchar();
return x*t;
}
int n,m,Q;
int L[MAX],R[MAX],K[MAX];
namespace Task1//20pts
{
void Calc(int x)
{
int l=x,r=x,len=0;
while(233)
{
len=r-l;
while(l>1&&(!K[l-1]||(l<=K[l-1]&&K[l-1]<=r)))--l;
while(r<n&&(!K[r]||(l<=K[r]&&K[r]<=r)))++r;
if(r-l==len)break;
}
L[x]=l;R[x]=r;
}
void Solve()
{
for(int i=1;i<=n;++i)Calc(i);
while(Q--)
{
int S=read(),T=read();
if(L[S]<=T&&T<=R[S])puts("YES");
else puts("NO");
}
}
}
namespace pf
{
void Calc1(int x)
{
int l=x,r=x,len=0;
while(233)
{
len=r-l;
while(l>1&&(!K[l-1]||(l<=K[l-1]&&K[l-1]<=r)))r=max(r,L[l-1]),l=L[l-1];
while(r<n&&(!K[r]||(l<=K[r]&&K[r]<=r)))++r;
if(r-l==len)break;
}
L[x]=l;R[x]=r;
}
void Calc2(int x)
{
int l=x,r=x,len=0;
while(233)
{
len=r-l;
while(l>1&&(!K[l-1]||(l<=K[l-1]&&K[l-1]<=r)))
{
--l;
//if(L[l])r=max(r,R[l]),l=L[l];
}
while(r<n&&(!K[r]||(l<=K[r]&&K[r]<=r)))l=min(l,R[r+1]),r=R[r+1];
if(r-l==len)break;
}
L[x]=l;R[x]=r;
}
void Solve()
{
//for(int i=1;i<=n/2;++i)Calc1(i);
for(int i=n;i>=1;--i)Calc2(i);
while(Q--)
{
int S=read(),T=read();
if(L[S]<=T&&T<=R[S])puts("YES");
else puts("NO");
}
}
}
int main()
{
//freopen("game.in","r",stdin);
//freopen("game.out","w",stdout);
n=read();m=read();Q=read();
for(int i=1;i<=m;++i)
{
int x=read(),y=read();
K[x]=y;
}
if(n<=1000)Task1::Solve();
else pf::Solve();
return 0;
}
【BZOJ5288】[HNOI2018]游戏(乱搞?)的更多相关文章
- [BZOJ5288][HNOI2018]游戏(拓扑排序)
传送门:https://www.luogu.org/problemnew/show/P4436 20分的暴力加一个Random_shuffle就A了.我还能说什么.. 不过这个也不是毫无道理,复杂度应 ...
- bzoj5288: [Hnoi2018]游戏
我还是太年轻了... 考场上就是直接枚举预处理当前位置左右延伸到的最远距离,好像是水了20.. 然后噶爷爷居然随机一下就AC了????mengbier #include<cstdio> # ...
- 【BZOJ5288】[HNOI2018]游戏(拓扑排序)
[BZOJ5288][HNOI2018]游戏(拓扑排序) 题面 BZOJ 洛谷 题解 去年省选的时候这题给我乱搞整过去整过去了,也是虐心了.... 所以当然是来讲正儿八经的正确做法啦. 很明显,我们需 ...
- “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp,K,二分+排序,L,矩阵快速幂,M,线段树区间更新+Lazy思想,N,超级快速幂+扩展欧里几德,O,BFS】
黑白图像直方图 发布时间: 2017年7月9日 18:30 最后更新: 2017年7月10日 21:08 时间限制: 1000ms 内存限制: 128M 描述 在一个矩形的灰度图像上,每个 ...
- 【bzoj3856】Monster 乱搞
题目描述 你要打一只h点血的怪物,每回合你攻击会造成a点伤害,回合结束后怪物会回b点血,你每攻击k回合需要休息一次,该回合不能造成伤害.怪物血量降到0以下就会死亡,问最后能否打死怪物. 输入 Ther ...
- URAL 1827 Indigenous Wars(排序、乱搞)
题意:给一个长度为n数组{a[i]}.有m个操作Ti,Si,Li表示找以Ti值结束,以Si值开始,长度为Li的连续子串.找到后,将区间的答案值设为1.一开始答案值全部为0.最后输出n个答案值. 好久没 ...
- UVA 11853 [dfs乱搞]
/* 大连热身E题 不要低头,不要放弃,不要气馁,不要慌张 题意: 在1000×1000的格子内有很多个炮弹中心,半径给定. 为某人能否从西部边界出发,从东部边界走出. 不能输出不能,能的话输出最北边 ...
- Codeforces 732e [贪心][stl乱搞]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给n个插座,m个电脑.每个插座都有一个电压,每个电脑都有需求电压. 每个插座可以接若干变压器,每个变压器可以使得电压变为x/2上取整. 有无限个变 ...
- 【BZOJ-4692】Beautiful Spacing 二分答案 + 乱搞(DP?)
4692: Beautiful Spacing Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 46 Solved: 21[Submit][Statu ...
随机推荐
- SpringBoot学习:添加JSP支持
项目下载地址:http://download.csdn.NET/detail/aqsunkai/9805821 (一)pom中添加依赖: <!-- https://mvnrepository.c ...
- 关于 Windows 10 字体安装目录的问题
不知从什么时候开始,本人台式机的Win10系统在安装字体的时候并不是安装到C:\Windows\Fonts目录中,而是安装到%USERPROFILE%\AppData\Local\Microsoft\ ...
- ubuntu 14.04 lts LAMP配置
一.目标 创建服务器环境,主要包括:Apache2.4.7 serverPHP 5.5.9Mysql 5.5.49扩展:MemcacheMcrypt 二.准备工作 1.服务器系统版本 Ubuntu s ...
- JS dataTables
原文地址: http://www.cnblogs.com/haogj/archive/2011/03/04/1971328.html 数据来源有四种: 1. 网页DOM对象 $(document) ...
- Siki_Unity_1-2_Unity5.2入门课程_进入Unity开发的奇幻世界_Roll A Ball
1-2 Unity5.2入门课程 进入Unity开发的奇幻世界 任务1:Roll A Ball项目简介 Unity官网的tutorial入门项目 方向键控制小球在平台上滚动,碰撞方块得分,消掉所有方块 ...
- [CF294B]Shaass and Bookshelf
问题描述 Shaass拥有n本书.他想为他的所有书制作一个书架,并想让书架的长宽尽量小.第i本书的厚度是t[i],且这本书的纸张宽度是w[i].书的厚度是1或2,所有书都有同样的高度(即书架的高是均匀 ...
- Dreamweaver CS5网页制作教程
说到Dreamweaver这个网页制作神器,不由得想起在学校里上的选修课,那是的我们只知道 table 布局,只知道构建网站最方便的是使用“所见即所得”编辑器.回忆一下,真的是很怀旧啊! 虽说咱现在大 ...
- c# html 导出excel
[CustomAuthorize] public FileResult ExportCustomerManagerVisitExcel(string dateType, string r ...
- puppet学习笔记
puppet优势:容易理解.用户较多.门槛低.简单.安装配置文件较少 puppet使用Ruby语言开发,安装puppet需要安装Ruby puppet运行环境:Redhat.Centos.Window ...
- 4-1:实现tee命令
#include <stdio.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h& ...