[SHOI2008]堵塞的交通
Description
有一天,由于某种穿越现象作用,你来到了传说中的小人国。小人国的布局非常奇特,整个国家的交通系统可
以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一条道路,所以总共有2C个
城市和3C-2条道路。 小人国的交通状况非常槽糕。有的时候由于交通堵塞,两座城市之间的道路会变得不连通,
直到拥堵解决,道路才会恢复畅通。初来咋到的你决心毛遂自荐到交通部某份差事,部长听说你来自一个科技高度
发达的世界,喜出望外地要求你编写一个查询应答系统,以挽救已经病入膏肓的小人国交通系统。 小人国的交通
部将提供一些交通信息给你,你的任务是根据当前的交通情况回答查询的问题。交通信息可以分为以下几种格式:
Close r1 c1 r2 c2:相邻的两座城市(r1,c1)和(r2,c2)之间的道路被堵塞了;Open r1 c1 r2 c2:相邻的两座城
市(r1,c1)和(r2,c2)之间的道路被疏通了;Ask r1 c1 r2 c2:询问城市(r1,c1)和(r2,c2)是否连通。如果存在一
条路径使得这两条城市连通,则返回Y,否则返回N;
Input
第一行只有一个整数C,表示网格的列数。接下来若干行,每行为一条交通信息,以单独的一行“Exit”作为
结束。我们假设在一开始所有的道路都是堵塞的。我们保证 C小于等于100000,信息条数小于等于100000。
Output
对于每个查询,输出一个“Y”或“N”。
Sample Input
Open 1 1 1 2
Open 1 2 2 2
Ask 1 1 2 2
Ask 2 1 2 2
Exit
Sample Output
N


#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
struct Data
{
bool luru,lurd,luld,ldru,ldrd,rurd;
}c[];
bool ru[],rd[];
int n;
char s[];
Data merge(Data dl,Data dr,int mid)
{
Data dm;
dm.luru=(dl.luru&ru[mid]&dr.luru)||(dl.lurd&rd[mid]&dr.ldru);
dm.lurd=(dl.luru&ru[mid]&dr.lurd)||(dl.lurd&rd[mid]&dr.ldrd);
dm.luld=(dl.luld)||(ru[mid]&&rd[mid]&&dl.luru&&dl.ldrd&&dr.luld);
dm.ldru=(dl.ldru&&ru[mid]&&dr.luru)||(dl.ldrd&&rd[mid]&&dr.ldru);
dm.ldrd=(dl.ldrd&&rd[mid]&&dr.ldrd)||(dl.ldru&&ru[mid]&&dr.lurd);
dm.rurd=(dr.rurd)||(ru[mid]&&rd[mid]&&dr.luru&&dr.ldrd&&dl.rurd);
return dm;
}
void update1(int rt,int l,int r,int x,bool up,bool k)
{
if (l==r)
{
if (up) ru[x]=k;
else rd[x]=k;
return;
}
int mid=(l+r)>>;
if (x<=mid) update1(rt<<,l,mid,x,up,k);
else update1(rt<<|,mid+,r,x,up,k);
c[rt]=merge(c[rt<<],c[rt<<|],mid);
}
void update2(int rt,int l,int r,int x,bool k)
{
if (l==r)
{
c[rt].luld=c[rt].rurd=c[rt].lurd=c[rt].ldru=k;
return;
}
int mid=(l+r)>>;
if (x<=mid) update2(rt<<,l,mid,x,k);
else update2(rt<<|,mid+,r,x,k);
c[rt]=merge(c[rt<<],c[rt<<|],mid);
}
Data query(int rt,int l,int r,int L,int R)
{
if (l==L&&r==R)
{
return c[rt];
}
int mid=(l+r)>>;
if (L>mid) return query(rt<<|,mid+,r,L,R);
else if (R<=mid) return query(rt<<,l,mid,L,R);
else
{
return merge(query(rt<<,l,mid,L,mid),query(rt<<|,mid+,r,mid+,R),mid);
}
}
void build(int rt,int l,int r)
{
if (l==r)
{
c[rt].luru=;c[rt].ldrd=;
return;
}
int mid=(l+r)>>;
build(rt<<,l,mid);
build(rt<<|,mid+,r);
}
int main()
{int i,r1,r2,c1,c2;
cin>>n;
build(,,n);
for (i=;i<n;i++)
ru[i]=rd[i]=;
while ()
{
scanf("%s",s);
scanf("%d%d%d%d",&r1,&c1,&r2,&c2);
if (c1>c2) swap(c1,c2),swap(r1,r2);
if (s[]=='E') break;
if (s[]=='O')
{
if (r1==r2)
update1(,,n,c1,r1==,);
else update2(,,n,c2,);
}
else if (s[]=='C')
{
if (r1==r2)
update1(,,n,c1,r1==,);
else update2(,,n,c2,);
}
else
{
Data dm=query(,,n,c1,c2),dl=query(,,n,,c1),dr=query(,,n,c2,n);
if (r1==&&r2==)
{
bool b1=dm.luru;
bool b2=dl.rurd&dm.ldru;
bool b3=dm.lurd&dr.luld;
bool b4=dl.rurd&dm.ldrd&dr.luld;
if (b1||b2||b3||b4) printf("Y\n");
else printf("N\n");
}
else if (r1==&&r2==)
{
bool b1=dm.ldrd;
bool b2=dl.rurd&dm.lurd;
bool b3=dm.ldru&dr.luld;
bool b4=dl.rurd&dm.luru&dr.luld;
if (b1||b2||b3||b4) printf("Y\n");
else printf("N\n");
}
else if (r1==&&r2==)
{
bool b1=dm.lurd;
bool b2=dl.rurd&dm.ldrd;
bool b3=dm.luru&dr.luld;
bool b4=dl.rurd&dm.ldru&dr.luld;
if (b1||b2||b3||b4) printf("Y\n");
else printf("N\n");
}
else if (r1==&&r2==)
{
bool b1=dm.ldru;
bool b2=dl.rurd&dm.luru;
bool b3=dm.ldrd&dr.luld;
bool b4=dl.rurd&dm.lurd&dr.luld;
if (b1||b2||b3||b4) printf("Y\n");
else printf("N\n");
}
}
}
}

[SHOI2008]堵塞的交通的更多相关文章
- 数据结构(线段树):BZOJ 1018: [SHOI2008]堵塞的交通traffic
1018: [SHOI2008]堵塞的交通traffic Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 2638 Solved: 864 Descri ...
- BZOJ 1018 [SHOI2008]堵塞的交通traffic
1018: [SHOI2008]堵塞的交通traffic Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 2247 Solved: 706[Submit ...
- BZOJ 1018: [SHOI2008]堵塞的交通traffic [线段树 区间信息]
1018: [SHOI2008]堵塞的交通traffic Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 3064 Solved: 1027[Submi ...
- bzoj千题计划108:bzoj1018: [SHOI2008]堵塞的交通traffic
http://www.lydsy.com/JudgeOnline/problem.php?id=1018 关键点在于只有两行 所以一个2*m矩形连通情况只有6种 编号即对应代码中的a数组 线段树维护 ...
- 【BZOJ1018】[SHOI2008]堵塞的交通
[BZOJ1018][SHOI2008]堵塞的交通 题面 bzoj 洛谷 洛谷 题解 菊队讲要用线段树维护连通性,但是好像没人写 解法一 将所有的加边删边离线,然后以最近删除时间为边权,$LCT$维护 ...
- 1018: [SHOI2008]堵塞的交通traffic
1018: [SHOI2008]堵塞的交通traffic 链接 分析: 用线段树维护区间的四个端点的联通情况,然后查询的时候,把所有覆盖到的区间合并起来即可. 六种情况左上到右上(左边到右边的情况)… ...
- 【bzoj1018】[SHOI2008]堵塞的交通traffic
1018: [SHOI2008]堵塞的交通traffic Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 2887 Solved: 954[Submit ...
- [BZOJ1018][SHOI2008]堵塞的交通traffic 线段树维护连通性
1018: [SHOI2008]堵塞的交通traffic Time Limit: 3 Sec Memory Limit: 162 MB Submit: 3795 Solved: 1253 [Sub ...
- 【BZOJ1018】[SHOI2008]堵塞的交通traffic 线段树
[BZOJ1018][SHOI2008]堵塞的交通traffic Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个 ...
- [bzoj1018][SHOI2008]堵塞的交通traffic_线段树
bzoj-1018 SHOI-2008 堵塞的交通traffic 参考博客:https://www.cnblogs.com/MashiroSky/p/5973686.html 题目大意:有一天,由于某 ...
随机推荐
- 基于 HTML5 Canvas 实现的文字动画特效
前言 文字是网页中最基本的元素,一般我们在网页上都是展示的静态文字,但是就效果来说,还是比较枯燥的.文字淡入淡出的动画效果在项目中非常实用,如果有某些关键的文字,可以通过这种动态的效果来提醒用户阅读. ...
- uboot中的命令体系
一.uboot的命令体系介绍以及实例分析: U-Boot 的命令实现大多在 common 目录下.在该目录下命令的代码文件都是以“ cmd_”开头的,如下图所示: 其中每一个文件都是一个命令实现的代码 ...
- Beta No.3
今天遇到的困难: 组员对github极度的不适应 github的版本控制和协同化编程确实操作起来需要一定的熟练度,我们缺乏这种熟练度 Android Studio版本不一致项目难以打开的问题仍然无法解 ...
- C语言第一次博客作业---顺序机构基础练习
一.PTA实验作业 题目1.温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1.实验代 ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- iis / asp.net 使用 .config 和 .xml 文件的区别
由于在项目中有同学使用后缀为 .xml 的文件作为配置文件,而配置文件中有一些敏感信息被记录,如接口地址,Token,甚至还有数据库连接字符串. 以前都没想过为何微软会使用.config 的后缀在作为 ...
- 静态链表C语言数据结构
静态链表就是将数组实现单链表: int Malloc_SLL(StaticLinkList space) { int i = space[0].cur;//取得第一个头节点的下标 if( space[ ...
- vue.js+socket.io+express+mongodb打造在线聊天
vue.js+socket.io+express+mongodb打造在线聊天 在线地址观看 http://www.chenleiming.com github地址 https://github.com ...
- PHP类的自动加载
spl_autoload_register(function ($className) { require str_replace('\\', '/', $className '.php'); }) ...
- 解决SoapFault (looks like we got no XML document)问题
今天在调试项目的时候出现下面的错误信息: SoapFault looks like we got no XML document (D:\phpStudy\WWW\self.shop.xunmall. ...