【CF1236D】Alice and the Doll(set)
题意:给定一个n*m的网格,其中k格有障碍
周驿东从(1,1)出发面朝右,每次行动前他可以选择顺时针旋转90度或不旋转,然后向自己朝向的位置走1格
问他能否不重复不遗漏的走过所有非障碍格
n,m,k<=1e5
思路:第一次看到E的一血比D早……
事实上就是在模拟朝右、下、左、上这样循环走,每次遇到障碍物就停下,这样一个过程
发现这个过程需要维护小于某个值的最大值和大于某个值的最小值,所以可以用set维护障碍物
参考了某红名大佬的写法,果然他们的暴力都是优雅的……
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<ll,ll> Pll;
typedef vector<int> VI;
typedef vector<PII> VII;
//typedef pair<ll,ll>P;
#define N 200010
#define M 200010
#define fi first
#define se second
#define MP make_pair
#define pb push_back
#define pi acos(-1)
#define mem(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
#define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
#define lowbit(x) x&(-x)
#define Rand (rand()*(1<<16)+rand())
#define id(x) ((x)<=B?(x):m-n/(x)+1)
#define ls p<<1
#define rs p<<1|1 const ll MOD=1e9+,inv2=(MOD+)/;
double eps=1e-;
ll INF=1e15;
int dx[]={-,,,};
int dy[]={,,-,}; set<int>c1[N],c2[N]; int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} int main()
{
int n=read(),m=read(),k=read();
rep(i,,k)
{
int x=read(),y=read();
c1[x].insert(y);
c2[y].insert(x);
}
rep(i,,n)
{
c1[i].insert();
c1[i].insert(m+);
}
rep(i,,m)
{
c2[i].insert();
c2[i].insert(n+);
}
int mx_x=n,mn_x=;
int mx_y=m,mn_y=;
ll s=;
int x=,y=,d=;
while()
{
int nx,ny;
if(d==)
{
nx=x;
auto it=c1[x].lower_bound(y);
ny=min(*it-,mx_y);
mn_x=nx+;
}
if(d==)
{
ny=y;
auto it=c2[y].lower_bound(x);
nx=min(*it-,mx_x);
mx_y=ny-;
}
if(d==)
{
nx=x;
auto it=c1[x].lower_bound(y);
--it;
ny=max(*it+,mn_y);
mx_x=nx-;
}
if(d==)
{
ny=y;
auto it=c2[y].lower_bound(x);
--it;
nx=max(*it+,mn_x);
mn_y=ny+;
}
s+=abs(nx-x)+abs(ny-y);
if(nx==x&&ny==y)
{
if(!(x==&&y==&&d==)) break;
}
d=(d+)%;
x=nx,y=ny;
}
if(s==1ll*n*m-k) printf("Yes\n");
else printf("No\n");
return ;
}
【CF1236D】Alice and the Doll(set)的更多相关文章
- 【HDU3032】Nim or not Nim?(博弈论)
[HDU3032]Nim or not Nim?(博弈论) 题面 HDU 题解 \(Multi-SG\)模板题 #include<iostream> #include<cstdio& ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】FMDB源码阅读(二)
[原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...
- 【原】FMDB源码阅读(一)
[原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...
- 【原】AFNetworking源码阅读(六)
[原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...
- 【原】AFNetworking源码阅读(五)
[原]AFNetworking源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中提及到了Multipart Request的构建方法- [AFHTTP ...
- 【原】AFNetworking源码阅读(四)
[原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDe ...
- 【原】AFNetworking源码阅读(三)
[原]AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇的话,主要是讲了如何通过构建一个request来生成一个data tas ...
- 【原】AFNetworking源码阅读(二)
[原]AFNetworking源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中我们在iOS Example代码中提到了AFHTTPSessionMa ...
随机推荐
- note.js使用express创建项目的步骤以及ip和端口配置
1.安装express npm install -g express 2.创建项目 express -e 项目名称 3.打开cmd进入项目目录安装依赖 npm install 4.打开配置文件./bi ...
- 【Linux开发】jpeglib使用指南
您可以到www.ijg.org网站下载libjpeg的源码, IJG JPEG Library就是jpeg压缩库,是以源码的形式提供给软件开发人员的,当然在软件包里也有编译好的库文件,我们这里就只用到 ...
- php php-fpm、nginx和js
1 php-fpm是什么 php-fpm是php fastCGI process manager的缩写.它是php的进程管理器,对每个请求的处理都是一个进程. php-fpm管理了一个进程池,假如进程 ...
- 任务调度之 Quartz
任务调度的背景 在业务系统中有很多这样的场景: 账单日或者还款日上午 10 点,给每个信用卡客户发送账单通知,还款通知.如何判断客户的账单日.还款日,完成通知的发送? 银行业务系统,夜间要完成跑批的一 ...
- kafka 安装教程
安装详述: https://www.jianshu.com/p/596f107e901a 3.0:运行:cd 到: D:\Installed_software\Professional\kafka_2 ...
- RabbitMq学习5-路由(Routing)
一.路由(Routing) 在前面的教程中,我们实现了一个简单的日志系统.可以把日志消息广播给多个接收者. 本篇教程中我们打算新增一个功能——使得它能够只订阅消息的一个字集.例如,我们只需要把严重的错 ...
- linux:输入/输出、重定向、管道
输入.输出: 程序的默认输入设备,叫标准输入. stdin 键盘 0 程序的默认输出设备,叫标准输出. stdout 监视器 1 程序的默认错误输出设备,叫标准错误输出.stde ...
- tabcontrol动态生成选项卡,并且在选项卡中添加窗体
http://blog.csdn.net/zx13525079024/article/details/6084733 今天在论坛上看到有人问到,如果在点击TRVEVIEW时动态生成tabcontrol ...
- flask之上下文管理
简单来说,falsk上下文管理可以分为三个阶段: 1.请求进来时,将请求鞋底的相关数据放入上下文管理中进行管理 2.在视图函数中,要去上下文管理中取值 3.请求响应之后,要将上下文管理中的数据清除 详 ...
- wpf textblock 长文本滚动
在textblock添加滚动条 <ScrollViewer VerticalScrollBarVisibility="Auto"> <TextBlock x:Na ...