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. linux命令提示符设置

    变成绿色 [root@localhost /usr/local]#vim /root/.bashrc # .bashrc # User specific aliases and functions a ...

  2. Siki_Unity_2-7_Stealth秘密行动

    Unity 2-7 Stealth秘密行动 Abstract:向量运算:Animation动画:Navigation寻路系统:Mecanim动画系统 任务1&2&3:游戏介绍 & ...

  3. 个人安装ss的一个记录

    在ubuntu16.04安装ss服务.由于lantern最近极其不稳定(我还花钱的qaq),经常断联以至于几乎废了,莫得办法,只好花钱搭一个了orz...呵,贫穷.... 安装shadowsocks ...

  4. adb shell top 命令详解

    [?25l[0m[H[J 当前系统时间 Tasks: 552 total, 1 running, 510 sleeping, 0 stopped, 0 zombie 任务(进程) 系统现在共有552个 ...

  5. react native组件的生命周期

    react native组件的生命周期 一.当页面第一次加载时,会依次调用: constructor() componentWillMount(): 这个函数调用时机是在组件创建,并初始化了状态之后, ...

  6. Python Pygame (4) 图像的变换

    Pygame中的transform模块可以使得你能够对图像(也就是Surface对象)做各种动作,列如左右上下翻转,按角度转动,放大缩小......,并返回Surface对象.这里列举了transfo ...

  7. Cube Stacking P0J 1988(加权并查集)

    Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes ...

  8. Java:有关try、catch和finally的学习(供自己参考)

    Java:有关try.catch和finally的学习 在看到书本的时候对finally的介绍是:不论是否在try块中产生异常,都会执行finally.当时对这句话的理解不够深,误以为在try...c ...

  9. 2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest Problem F. Format

    题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229510 时间限制:1s 空间限制:512MB 题目大意: 给定一个字符串,使用%[...] ...

  10. 软工实践-Alpha 冲刺 (6/10)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 已经解决登录注册等基本功能的界面. 完成了主界面的基本布局 ...