AtCoder Regular Contest 076E Coneected?
题意
给出一个矩形区域和上面的m对整点,要求在矩形区域内画m条互不相交的线(可以是曲线)分别把m对点连接起来.只需要输出能不能做到.
分析
假设我们已经画了一条线.因为在这个题中有用的是平面区域之间的相对位置,那么这条线我们可以随便拉长,缩短,点的位置也可以移动而不影响结果.因此,如果一对点都不在矩形区域的边界上,我们可以把它们之间连线然后把这两个点之间的线缩短,把一个点移动到另一个点的位置上.如果有一个点在边界上,另一个点不在边界上,那么可以连线之后把不在边界上的点移动到边界上.
可以,这很拓扑
因此我们可以断言:只有两个点都在边界上的点会产生矛盾.现在我们可以把边界看成一个环,上面有m对点,要求在环的内部画线分别把m对点连接起来.那么给所有点逆时针排序后,如果有两对点(A1,A2)和(B1,B2)是A1,B1,A2,B2的顺序,那么无解.如果有解的话,任意两对点在环上所占的区间要么相互包含,要么互不相交.那么这是一个类似括号序列的东西,拿栈扫一遍就可以了.
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100005;
int R,C,N;
struct point{
int x,y,num;
void read(){
scanf("%d%d",&x,&y);
}
bool onedge(){
if(x==0||y==0||x==R||y==C)return true;
else return false;
}
int typ()const{
if(x==0)return 1;
else if(y==0)return 2;
else if(x==R)return 3;
else return 4;
}
bool operator <(const point &B)const{
int t1=typ(),t2=B.typ();
if(t1!=t2)return t1<t2;
else if(t1==1)return y>B.y;
else if(t1==2)return x<B.x;
else if(t1==3)return y<B.y;
else return x>B.x;
}
}P[maxn][2];
point P2[maxn*2];int tot=0;
int stk[maxn*2],top=0;
int main(){
scanf("%d%d%d",&R,&C,&N);
for(int i=1;i<=N;++i){
P[i][0].read();P[i][1].read();P[i][0].num=P[i][1].num=i;
if((P[i][0].onedge())&&(P[i][1].onedge())){
P2[++tot]=P[i][0];P2[++tot]=P[i][1];
}
}
sort(P2+1,P2+tot+1);
for(int i=1;i<=tot;++i){
if(top&&stk[top-1]==P2[i].num)--top;
else stk[top++]=P2[i].num;
}
if(top)printf("NO\n");
else printf("YES\n");
return 0;
}
AtCoder Regular Contest 076E Coneected?的更多相关文章
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- AtCoder Regular Contest 094
AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...
- AtCoder Regular Contest 096
AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...
- AtCoder Regular Contest 097
AtCoder Regular Contest 097 C - K-th Substring 题意: 求一个长度小于等于5000的字符串的第K小子串,相同子串算一个. K<=5. 分析: 一眼看 ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
- AtCoder Regular Contest 093
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...
- AtCoder Regular Contest 095
AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...
- AtCoder Regular Contest 102
AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...
随机推荐
- 20145209 2016-2017-2 《Java程序设计》课堂实践内容
20145209 2016-2017-2 <Java程序设计>课堂实践内容 一.递归 题目详情: public class TestArgs{ public static void mai ...
- 【BZOJ4560】[NOI2016]优秀的拆分
[BZOJ4560][NOI2016]优秀的拆分 题面 bzoj 洛谷 题解 考虑一个形如\(AABB\)的串是由两个形如\(AA\)的串拼起来的 那么我们设 \(f[i]\):以位置\(i\)为结尾 ...
- NB-IOT模组指令AT+NMSTATUS和AT+CGPADDR对比
1. AT+NMSTATUS,这个指令是用来查询模块在IOT平台的注册情况.注册指的是lwm2m协议里面的注册机制,详细可以参考lwm2m协议. 2. AT+MREGSWT,设置重启之后,自动启动注册 ...
- 【转】linux下,如何把整个文件夹上传到服务器(另一台linux)
原文转自:https://zhidao.baidu.com/question/1046040541327493019.html 1.Linux下目录复制:本机->远程服务器 scp -r /h ...
- linux安装PHP-memcache-redis扩展
1.php memcache 扩展 http://pecl.php.net/package/memcache/3.0.8 下载文件源码 #tar zxvf memcache-3.0.8.tar#/us ...
- CentOS 下 MySQL 5.6 基于 RPM 的下载、安装、配置
CentOS 下 MySQL 5.6 基于 RPM 的下载.安装.配置 系统: CentOS 7 x86_64 MySQL 版本: 5.6.40 安装方式: RPM 下载 下载地址 操作系统 选择 R ...
- spark读取外部配置文件的方法
spark读取外部配置文件的方法 spark-submit --files /tmp/fileName /tmp/test.jar 使用spark提交时使用--files参数,spark会将将本地的 ...
- Jenkins 自动化测试
学习 Jenkins 自动化测试的系列文章 Robot Framework 概念 Robot Framework 安装 Pycharm + Robot Framework 环境搭建 Robot Fra ...
- RNN: Feed Forward, Back Propagation Through Time and Truncated Backpropagation Through Time
原创作品,转载请注明出处哦~ 了解RNN的前向.后向传播算法的推导原理是非常重要的,这样, 1. 才会选择正确的激活函数: 2. 才会选择合适的前向传播的timesteps数和后向传播的timeste ...
- 如何成为优秀评级卖家(Top-rated seller)?与超级卖家的区别是
以eBay美国站点为例,要成为优秀评级卖家(Top-rated seller),需满足如下条件: ● 先成为 eBay超级卖家 ● Low DSR (US buyers) <= 0.50% 或 ...