Codeforces Round #593 (Div. 2)D(螺旋形模拟)
#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
vector<int>po[100007],col[100007];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,m,k;
cin>>n>>m>>k;
int x=0,y=0;
for(int i=1;i<=k;++i){
cin>>x>>y;
po[x].push_back(y);
col[y].push_back(x);
}
long long sum=0;
int tamp=m;
x=1,y=1;
for(int i=0;i<po[1].size();++i)if(po[x][i]>1)
tamp=min(tamp,po[1][i]-1);
sum=tamp;
int a=0,b=0,c=0,d=0;//a为上边界,b为右边界,c为下边界,d为左边界
a=1;
y=tamp;//y为当前处于哪一列
while(1){
tamp=n-c;//tamp为当前行/列最远能走到的位置
for(int i=0;i<col[y].size();++i)if(col[y][i]>x)
tamp=min(tamp,col[y][i]-1);
if(tamp==x)
break;
sum+=tamp-x;
b=m-y+1;
x=tamp;//x为当前处于哪一行
tamp=d+1;
for(int i=0;i<po[x].size();++i)if(po[x][i]<y)
tamp=max(tamp,po[x][i]+1);
if(tamp==y)
break;
sum+=y-tamp;
c=n-x+1;
y=tamp;
tamp=a+1;
for(int i=0;i<col[y].size();++i)if(col[y][i]<x)
tamp=max(tamp,col[y][i]+1);
if(tamp==x)
break;
sum+=x-tamp;
d=y;
x=tamp;
tamp=m-b;
for(int i=0;i<po[x].size();++i)if(po[x][i]>y)
tamp=min(tamp,po[x][i]-1);
if(tamp==y)
break;
sum+=tamp-y;
a=x;
y=tamp;
}
if(sum==1ll*n*m-1ll*k)
cout<<"Yes";
else
cout<<"No";
return 0;
}
最新文章
- C#使用ADO.NET访问数据库(一)
- windows 上vmare超卡的问题解决方案
- Validation failed for one or more entities.
- 腾讯TOS
- JS+JavaBean判断管理员增删改的操作权限
- jQueryUI Datepicker的使用
- Storyboard里面的几种Segue区别和视图的切换
- 跳出if判断
- QR码生成原理
- Cocos2d-x在线粒子编辑器
- Flex移动应用程序开发的技巧和窍门(二)
- Oracle的substr函数
- HTML中引入CSS的方法
- Spring Security 入门(1-5)Spring Security - 匿名认证
- 写给 Android 应用工程师的 Binder 原理剖析
- Flask入门之SQLAlchemy数据库连接操作(第15讲)
- densenet 中的shortcut connection
- RedHat7系列(Centos/Debian) FireWall 防火墙 设置
- php 生成静态页面
- Delphi学习技巧
热门文章
- Makefile中的wildcard/notdir/patsubst
- Laravel 部署到阿里云 / 腾讯云
- Word2010如何从指定页设置页码
- 专题-集合-HashMap
- Mysql SQL CAST()函数
- Drawer 侧边栏、以及侧边栏内 容布局
- Lining Up
- 数据库备份与还原:mysqldump,source
- Could not initialize class net.sourceforge.tess4j.TessAPI 解决方法
- allegro 16.6 铜皮显示问题