把点按坐标排序,每次找出最小的点,一定在最外层,再顺着把最外层的边删掉,经过了两次的边不会被冲毁。

#include<bits/stdc++.h>
using namespace std;
const int N=4e5+5;
int n,m,y,q[N],x[N],e[N],*back=e,*f[N][4];
struct vec{
int x,y,z;
}a[N],r[N];
bool operator<(vec u,vec v){
return u.x<v.x||u.x==v.x&&u.y<v.y;
}
int foo(int i,int j){
return a[i].x==a[j].x?a[i].y<a[j].y?3:1:a[i].x<a[j].x?2:0;
}
void add(int u,int v){
f[u][foo(u,v)]=&(*back++=v);
f[v][foo(v,u)]=&(*back++=u);
}
bool test(int i){
for(int j=0;j!=4;++j)
if(f[i][j])return 1;
return 0;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
a[i].z=i;
scanf("%d%d",&a[i].x,&a[i].y);
r[i]=a[i];
}
scanf("%d",&m);
for(int i=1;i<=m;++i){
int u,v;
scanf("%d%d",&u,&v);
add(u,v);
}
sort(r+1,r+n+1);
for(int i=1;i<=n;++i)
while(test(r[i].z)){
int l=0,j=2,k=r[i].z;
do{
j=j+3&3;
while(!f[k][j])
++j&=3;
++x[(q[l++]=f[k][j]-e)>>1];
k=*f[k][j];
}while(k!=r[i].z);
for(int j=0;j!=l;++j){
int u=e[q[j]],v=e[q[j]^1];
f[u][foo(u,v)]=0;
f[v][foo(v,u)]=0;
}
}
for(int i=0;i!=m;++i)
y+=x[i]==2;
printf("%d\n",y);
}

BZOJ1804: [Ioi2007]Flood 洪水的更多相关文章

  1. 洛谷 P4646 - [IOI2007] flood 洪水(拆点+bfs)

    题面传送门 一道挺有意思的题(?) orz djq yyds %%%%%%%%%%%%%%%%%% 首先一个很直观的想法是将每个房间看作一个节点,在有墙的房间旁边连边权为 \(1\) 的边然后 bfs ...

  2. 扯谈网络编程之Tcp SYN flood洪水攻击

    简单介绍 TCP协议要经过三次握手才干建立连接: (from wiki) 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,server回应(SYN+ACK)包,可是攻击者不回应ACK包,这 ...

  3. TCP SYN flood洪水攻击原理和防御破解

    简介 TCP协议要经过三次握手才能建立连接: 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+AC ...

  4. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  5. 英语发音规则---字母组合oo的发音规律

    英语发音规则---字母组合oo的发音规律 一.总结 一句话总结:在英语单词中,字母组合oo多数读长音/u:/,少数读短音/ʊ/.另外,还有极少数的特殊情况读/ʌ/, 在英语单词中,字母组合oo多数读长 ...

  6. DDoS攻击工具

    DDoS攻击工具 综合性工具 综合性工具除了可以进行DDoS攻击外,还可用于其他的用途,例如:端口扫描.安全审计.防火墙等.实际上,大部分综合性工具开发的原始目的并不是用于DDoS,而是"网 ...

  7. Tomcat 调优之从 Linux 内核源码层面看 Tcp backlog

    前两天看到一群里在讨论 Tomcat 参数调优,看到不止一个人说通过 accept-count 来配置线程池大小,我笑了笑,看来其实很多人并不太了解我们用的最多的 WebServer Tomcat,这 ...

  8. TCP洪水攻击(SYN Flood)的诊断和处理

    TCP洪水攻击(SYN Flood)的诊断和处理   SYN Flood介绍 前段时间网站被攻击多次,其中最猛烈的就是TCP洪水攻击,即SYN Flood. SYN Flood是当前最流行的DoS(拒 ...

  9. 洪水(flood)

    洪水(flood) 题目背景 Awson是某国际学校信竞组的一只菜鸡.今年,该市发生了千年难遇的洪水.被监禁在学校的Awson不甘怠堕,想将自己投入到公益服务事业中去.这天,他偷了H老师的小电驴,偷偷 ...

随机推荐

  1. JavaScript学习笔记-选择器集合调用方法

    <script type="text/javascript"> function uu(namePd) { //判断id var reId = new RegExp(/ ...

  2. [AJAX系列]onreadystatechange事件

    onreadystatechange事件: 当请求被发送到服务器时,我们需要执行一些基于响应的任务 每当readyState改变时,就会触发onreadystatechange事件 readyStat ...

  3. RabbitMQ官方中文入门教程(PHP版) 第四部分:路由(Routing)

    路由(Routing) 在前面的教程中,我们实现了一个简单的日志系统.可以把日志消息广播给多个接收者. 本篇教程中我们打算新增一个功能——使得它能够只订阅消息的一个字集.例如,我们只需要把严重的错误日 ...

  4. Android下的数据储存方式(三)

      Android下最好的数据储存方式:关系型数据库sqlite.   数据库的创建:使用SqliteOpenHelper类 结合SqliteOpenHelper类和SQLiteDatabase类的帮 ...

  5. __getattr__与__getattribute__

    class Foo: def __init__(self,x): self.x=x def __getattr__(self, item): print("执行的是我----->&qu ...

  6. 如何使用国内源部署Ceph?

    由于网络方面的原因,Ceph的部署经常受到干扰,通常为了加速部署,基本上大家都是将Ceph的源同步到本地进行安装.根据Ceph中国社区的统计,当前已经有国内的网站定期将Ceph安装源同步,极大的方便了 ...

  7. mysql数据库行级锁的使用(二)

    项目上的另外一个需求是: 在做统计的时候需要将当前表锁定不能更新当前表记录 直接上代码 package com.robert.RedisTest; import java.sql.Connection ...

  8. open-flash-chart2

    链接 http://www.oschina.net/news/10797/Open-Flash-Chart-2-0 open-flash-chart.rar http://123-reg-suspen ...

  9. hdu2888 二维RMQ

    Check Corners Time Limit: 2000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  10. poj2955括号匹配 区间DP

    Brackets Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5424   Accepted: 2909 Descript ...