Portal -->arc076E

Description

  给你一个\(R*C\)的矩形,矩形中某些格子的端点上填了\(1\sim n\)这\(n\)个数字,每个数字出现了恰好两遍,现在要将每一对数字用曲线连起来,线不允许出矩形,问是否存在一种连线方案使得任意两条线不相交

  数据范围:\(1<=R,C<=10^8,1<=n<=10^5\)

  

Solution

  结论题什么的。。==

  实际上我们可以将。。这个连线看成一个。。类似切割的操作,不停地切这个平面,然后如果说两个部分不相连了那么不能存在一对点分别存在于两个部分

​  这样转化一下之后就比较直观了,注意到如果说我们连的(切的)不是两个点都在边界上的一对点,这个平面并不会有新的不相连的部分产生,也就是说如果不存在连个点都在边界上这样的点对,就一定存在一种连线方式(各种缝隙绕来绕去之类的)满足要求

  那么所以我们只要考虑那些两个点都在边界上的点对就好了,只要这些点对之间的连边不存在冲突,整个就肯定有解了,所以接下来提到的点对都是满足两个点都在边界上的点对

  注意到一旦连了一对这样的点对,就会将其所在的平面部分分成两个独立的部分,而这两个部分之间不能连边,所以我们可以考虑从矩形的左上角开始,沿着边界顺时针转一圈,按顺序将沿路上所有的点列成一排,如果说一对点之间夹有不完整的一个点对(也就是。。一对点之间只有某个点对的其中一个),那么就说明这两个点对会有冲突(按照其中一个点对将平面分成两个部分之后,另一个点对的两个点必定会被分在两个不相连的部分),那就凉凉了,这个过程我们用一个栈模拟一下即可

  

  mark:直观转化(可能做题需要一点想象力==)

  

  代码大概长这个样子

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+10,add=1e8+1;
struct Data{
int x,id;
friend bool operator < (Data x,Data y){return x.x<y.x;}
}rec[N*2];
int st[N];
int n,m,tot,D;
int change(int x,int y){
if (x==1) return y;
if (y==m) return x+add;
if (x==n) return m-y+1+add*2;
if (y==1) return n-x+1+add*3;
return -1;
} int main(){
#ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
#endif
int x1,y1,x2,y2,tmp1,tmp2;
scanf("%d%d%d",&n,&m,&D);
++n; ++m;
for (int i=1;i<=D;++i){
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
++x1; ++y1; ++x2; ++y2;
tmp1=change(x1,y1);
tmp2=change(x2,y2);
if (tmp1==-1||tmp2==-1) continue;
rec[++tot].x=tmp1; rec[tot].id=i;
rec[++tot].x=tmp2; rec[tot].id=i;
}
sort(rec+1,rec+1+tot);
int top=0;
for (int i=1;i<=tot;++i){
if (st[top]==rec[i].id)
--top;
else
st[++top]=rec[i].id;
}
if (top) printf("NO\n");
else printf("YES\n");
}

【arc076E】Connected?的更多相关文章

  1. 【poj1737】 Connected Graph

    http://poj.org/problem?id=1737 (题目链接) 题意 求n个节点的无向连通图的方案数,不取模w(゚Д゚)w Solution 刚开始想了个第二类斯特林数,然而并不知道怎么求 ...

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

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

  3. 【CodeForces】913 F. Strongly Connected Tournament 概率和期望DP

    [题目]F. Strongly Connected Tournament [题意]给定n个点(游戏者),每轮游戏进行下列操作: 1.每对游戏者i和j(i<j)进行一场游戏,有p的概率i赢j(反之 ...

  4. 【CodeChef】Find a special connected block - CONNECT(斯坦纳树)

    [CodeChef]Find a special connected block - CONNECT(斯坦纳树) 题面 Vjudge 题解 还是一样的套路题,把每个数字映射到\([0,K)\)的整数, ...

  5. 【Henu ACM Round#24 E】Connected Components

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 要求把连续的一段li..ri的边全都删掉. 然后求剩下的图的联通数 如果暴力的话 复杂度显然是O(k*m)级别的. 考虑我们把li. ...

  6. 【Educational Codeforces Round 37 E】Connected Components?

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] bfs. 用一个链表来记录哪些点已经确定在某一个联通快里了. 一开始每个点都能用. 然后从第一个点开始进行bfs. 然后对于它的所有 ...

  7. Python高手之路【三】python基础之函数

    基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...

  8. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  9. 【RDA】使用RDA(Remote Diagnostic Agent)工具对数据库进行健康检查

    [RDA]使用RDA(Remote Diagnostic Agent)工具对数据库进行健康检查 分类: Linux RDA英文全称叫做"Oracle Remote Diagnostic Ag ...

随机推荐

  1. vs2017搭建linux c++开发环境

    最近一直在阅读ovs的源码,看到用户态代码的时候,需要对用户态的代码进行调试,一开始想直接使用linux中的GDB进行调试,但是ovs的工程太过于复杂,从网上找了些文章,发现vs2017能够支持lin ...

  2. kylin-note

    http://www.cnblogs.com/tgzhu/category/915975.html https://sdk.cn/news/3566 https://www.linuxidc.com/ ...

  3. 手机上Uncaught ReferenceError: __WEBPACK_AMD_DEFINE_ARRAY__ is not defined的错误

    问题: vue2.0和webpack2.X的写的项目在电脑的浏览器上打开正常,在手机浏览器中访问页面的时候不能正常显示,空白. 通过chrome的真机调试chrome://inspect/#devic ...

  4. Alpha阶段事后诸葛亮会议记录

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2324 组名:可以低头,但没必要 组长:付佳 组员:张俊余  李文涛  孙 ...

  5. Thunder团队第七周 - Scrum会议5

    Scrum会议5 小组名称:Thunder 项目名称:i阅app Scrum Master:邹双黛 工作照片: 宋雨沉迷于照相无法自拔,所以不在相片中. 参会成员: 王航:http://www.cnb ...

  6. 简评搜狗输入法(ios端)

    首先说说为什么不使用iPhone自带的输入法呢,首先是词库不够丰富,好多简单的词语需要逐个字逐个字的选择,记忆功能不太好,其次是全键盘式的输入我不太习惯,还是九宫格的输入法比较简单,更方便快捷. 搜狗 ...

  7. SpringBoot与Swagger2整合

    一.Swagger简介与优势 相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还为了以后交接方便,都有要求写API文档. Swa ...

  8. 在pycharm中使用scrapy爬虫

    目标在Win7上建立一个Scrapy爬虫项目,以及对其进行基本操作.运行环境:电脑上已经安装了python(环境变量path已经设置好), 以及scrapy模块,IDE为Pycharm .操作如下: ...

  9. Windows Forms编程实战学习:第一章 初识Windows Forms

    初识Windows Forms 1,用C#编程 using System.Windows.Forms;   [assembly: System.Reflection.AssemblyVersion(& ...

  10. Java throw try catch

    public class Runtest { public static void main(String[] args) { // TODO Auto-generated method stub T ...