传送门

题目大意

给定$H\times W$的网格$(W,H\leq 10^8)$上的$N$对顶点,即两线交叉的交叉点而非格子内部$(N\leq 10^5)$,求是否存在至少一种方案使得每对点之间都有一条不出网格边界的曲线且曲线互不相交。

题解

假设当前连线情况确定,两点之间是否存在意在连线的可能仅与两点间的连通性由有关,很显然当一对点有任意一点不在边界上,那么由于所有点两两不同,那么连接这对点对其他点对的连通性毫无影响,所以我们只需要判断所有点都在边界上的那些点对之间有没有两两交叉的即可。

可以将方格边界上顺时针标号,将每个对点看做一个区间,判断区间之间是否只存在包含关系即可,这个用类似括号序列一样的方法用栈维护递增的左端点,最后只需要判断栈中有没有未删掉的元素。

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define M 400020
using namespace std;
int read(){int nm=0,fh=1; int cw=getchar();for(;!isdigit(cw);cw=getchar()) if(cw=='-') fh=-fh;for(;isdigit(cw);cw=getchar()) nm=nm*10+(cw-'0');return nm*fh;
}
struct num{int pos,id;num(){pos=0,id=0;}num(int _pos,int _id){pos=_pos,id=_id;}
}p[M],S[M];
int vis[M],H,W,n,top;
bool on(int x,int y){return x==0||y==0||x==H||y==W;}
int bas(int x,int y){if(!x) return y; if(y==W) return W+x;if(x==H) return W+H+W-y; return W+H+W+H-x;
}
bool cmp(num x,num y){return x.pos<y.pos;}
int main(){H=read(),W=read(),n=read();for(int i=1;i<=n;i++){int x=read(),y=read(),xx=read(),yy=read();if(!on(x,y)||!on(xx,yy)){i--,n--;continue;}int L=bas(x,y),R=bas(xx,yy); if(L>R) swap(L,R);p[(i<<1)-1]=num(L,i),p[i<<1]=num(R,i);} n<<=1,sort(p+1,p+n+1,cmp);for(int i=1;i<=n;i++){if(S[top].id!=p[i].id||!top) top++,S[top]=p[i];else top--;}puts(top?"NO":"YES"); return 0;
}

转载于:https://www.cnblogs.com/OYJason/p/9799133.html

Arc076_E Connected?相关推荐

  1. trogan连接不上_解决连接不上网(Connection not connected).doc

    解决连接不上网(Connection not connected).doc 解决连接不上网(Connection not connected) The computer doesn't connect ...

  2. HDU 4635 Strongly connected(缩点、最多可加边数使得仍然非强连通)

    整理的算法模板合集: ACM模板 HDU 4635 Strongly connected Give a simple directed graph with N nodes and M edges. ...

  3. 网络模型--Densely Connected Convolutional Networks

    Densely Connected Convolutional Networks CVPR2017 best paper Code: https://github.com/liuzhuang13/De ...

  4. (全网率先解决)Pycharm在Debug的时候出现frames are not available;Variable:Connected

    先说说我的情况,这样可以让你对号入座. 我是本地笔记本电脑使用Pycharm,但是Pycharm的Python解释器连接的是远程的实验室linux服务器.也就是说,你猜到了,我的是Pycharm专业版 ...

  5. 程序运行过程中遇到“ORA-03114: not connected to ORACLE”的问题解决

    程序运行过程中遇到"ORA-03114: not connected to ORACLE"的问题解决 参考文章: (1)程序运行过程中遇到"ORA-03114: not ...

  6. ORA-01940: cannot drop a user that is currently connected 问题解析

    xxx为待删除的用户名 SQL> drop user xxx cascade; 删除数据库用户的时候经常会遇到这样的错误: ORA-01940: cannot drop a user that ...

  7. 【CF913F】Strongly Connected Tournament 概率神题

    [CF913F]Strongly Connected Tournament 题意:有n个人进行如下锦标赛: 1.所有人都和所有其他的人进行一场比赛,其中标号为i的人打赢标号为j的人(i<j)的概 ...

  8. 论文阅读:DENSELY CONNECTED CONVOLUTIONAL NETWORKS

    概述 作者观察到目前的深度网络有一个重要的特点是shorted connected,认为能够训练极深的网络很可能就是由于这个原因. 于是作者提出了Densely connected convoluti ...

  9. 对Keil在线烧录程序弹出“The firmware of the connected J-Link[SN:xxxxxxxx] does not support......的问题解决

    问题:最近下载并使用Keil_v5.29,在线烧录程序时出现"The firmware of the connected J-Link[SN:xxxxxxxx] does not suppo ...

最新文章

  1. 安卓上的微软 Edge 浏览器新增支持长截图
  2. 这样系统的学习分布式,他日必成大器!
  3. python常用的字串格式化选项
  4. php如何编写应用程序,编写安全 PHP 应用程序的七个习惯
  5. 找出最大和第二大的数PHP,2020-09-01 十大经典排序算法总结php为例
  6. ajax 小木虫,NIST数据库中Acc. 是什么 小木虫
  7. cocos2d-x 之 CCProgressTimer
  8. Spring Security 11 种过滤器介绍
  9. Julia: 如何读出csv文件中的中文字符?
  10. AnimationController
  11. 线性子空间的交、并、和、维数与直和等各种关系总结
  12. python修改植物大战僵尸阳光值
  13. 知识付费消停了,广播剧2019要从小众狂欢走向大众化?
  14. python批量删缩进_鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频?...
  15. Count UVA - 1645
  16. 使用Enounce MySpeed对flv加速播放
  17. 对象或者数组的复制(深拷贝)---泥腿子前端
  18. c语言移动光标到指定坐标,C语言实现控制台中光标随意移动
  19. MongoDB面试题整理-四年经验
  20. 解决Win10导航栏中快速访问列表内…

热门文章

  1. linux 查看手机硬件信息失败,linux下硬件信息的查看总结
  2. 使用MyEclipse建立working set
  3. C++的hashmap和Java的hashmap
  4. Spring Data JPA使用
  5. laravel 淘宝 NPM 镜像
  6. 互联网服务应用协议设计
  7. linux 下的sar工具命令小结
  8. Js中函数式编程的理解
  9. pll制作分频器_PLL学习过程记录
  10. vim使用zsh_使用zsh,坚固的DevOps工具,Python库,vim,shell dotfile,Linux命令等来提高生产力