三分太难了、于是来写线段树、

、维护四个点之间的连通性、、然后就没了。

然后把n定义成bool、狂wa不止、

以后数据结构题不写对拍就不要交!

你一定要足够的相信你的程序很多地方都是错的、

码:

#include<iostream>
#include<cstdio>
using namespace std;
#define zuo o<<1,l,mid
#define you o<<1|1,mid+1,r
#define N 100005
bool lt[N<<2][5][5],tu[N][3],tu2[N],yici,lin[5][5],lin2[5][5],zj[5][5],sd[5][5],hn[5][5];
int a,b,x,y,n;
char ch[5555];
void up(int o,int mid)
{
int i,j;
int ll=o<<1;
int rr=o<<1|1;
for(i=1;i<=4;i++)
lt[o][i][1]=lt[o][i][2]=lt[o][i][3]=lt[o][i][4]=0;
//判断24联通
if(lt[rr][2][4])lt[o][2][4]=lt[o][4][2]=1;
if(tu[mid][1]&&tu[mid][2]&&lt[rr][2][1]&&lt[ll][2][4]&&lt[rr][3][4]) lt[o][2][4]=lt[o][4][2]=1;
//判断1 3联通
if(lt[ll][1][3])lt[o][1][3]=lt[o][3][1]=1;
if(tu[mid][1]&&tu[mid][2]&&lt[ll][2][1]&&lt[rr][1][3]&&lt[ll][3][4]) lt[o][1][3]=lt[o][3][1]=1;
//判断1 2联通
if(tu[mid][1]&&lt[ll][1][2]&&lt[rr][1][2])lt[o][1][2]=lt[o][2][1]=1;
if(tu[mid][2]&&lt[ll][1][4]&&lt[rr][3][2])lt[o][1][2]=lt[o][2][1]=1;
//判断1 4联通
if(tu[mid][1]&&lt[ll][1][2]&&lt[rr][1][4])lt[o][1][4]=lt[o][4][1]=1;
if(tu[mid][2]&&lt[ll][1][4]&&lt[rr][4][3])lt[o][1][4]=lt[o][4][1]=1;
//判断2 3联通
if(tu[mid][1]&&lt[ll][3][2]&&lt[rr][1][2])lt[o][2][3]=lt[o][3][2]=1;
if(tu[mid][2]&&lt[ll][3][4]&&lt[rr][3][2])lt[o][2][3]=lt[o][3][2]=1;
//判断3 4联通
if(tu[mid][1]&&lt[ll][3][2]&&lt[rr][1][4])lt[o][3][4]=lt[o][4][3]=1;
if(tu[mid][2]&&lt[ll][3][4]&&lt[rr][3][4])lt[o][3][4]=lt[o][4][3]=1;
}
void jian(int o,int l,int r)
{
if(l==r)
{
lt[o][1][2]=lt[o][2][1]=1;
lt[o][3][4]=lt[o][4][3]=1;
return ;
}
int mid=(l+r)>>1;
jian(zuo);
jian(you);
up(o,mid);
}
void gai(int o,int l,int r)
{
if(l==r)
{
if(tu2[l])lt[o][1][3]=lt[o][1][4]=lt[o][2][3]=lt[o][2][4]=lt[o][3][1]=lt[o][4][1]=lt[o][3][2]=lt[o][4][2]=1;
else lt[o][1][3]=lt[o][1][4]=lt[o][2][3]=lt[o][2][4]=lt[o][3][1]=lt[o][4][1]=lt[o][3][2]=lt[o][4][2]=0;
return;
}
int mid=(l+r)>>1;
if(a<=mid)   gai(zuo);
if(b>mid)    gai(you);
up(o,mid);
}
void wen(int o,int l,int r)
{
if(a<=l&&r<=b)
{int i,j;
if(yici)
{
yici=0;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
lin[i][j]=lt[o][i][j];
return;
}
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
lin2[i][j]=0;
//判断24联通
if(lt[o][2][4])lin2[2][4]=lin2[4][2]=1;
if(tu[l-1][1]&&tu[l-1][2]&&lt[o][2][1]&&lin[2][4]&&lt[o][3][4]) lin2[2][4]=lin2[4][2]=1;
//判断1 3联通
if(lin[1][3])lin2[1][3]=lin2[3][1]=1;
if(tu[l-1][1]&&tu[l-1][2]&&lin[2][1]&&lt[o][1][3]&&lin[3][4]) lin2[1][3]=lin2[3][1]=1;
//判断1 2联通
if(tu[l-1][1]&&lin[1][2]&&lt[o][1][2])lin2[1][2]=lin2[2][1]=1;
if(tu[l-1][2]&&lin[1][4]&&lt[o][3][2])lin2[1][2]=lin2[2][1]=1;
//判断1 4联通
if(tu[l-1][1]&&lin[1][2]&&lt[o][1][4])lin2[1][4]=lin2[4][1]=1;
if(tu[l-1][2]&&lin[1][4]&&lt[o][4][3])lin2[1][4]=lin2[4][1]=1;
//判断2 3联通
if(tu[l-1][1]&&lin[3][2]&&lt[o][1][2])lin2[2][3]=lin2[3][2]=1;
if(tu[l-1][2]&&lin[3][4]&&lt[o][3][2])lin2[2][3]=lin2[3][2]=1;
//判断3 4联通
if(tu[l-1][1]&&lin[3][2]&&lt[o][1][4])lin2[3][4]=lin2[4][3]=1;
if(tu[l-1][2]&&lin[3][4]&&lt[o][3][4])lin2[3][4]=lin2[4][3]=1;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
lin[i][j]=lin2[i][j];
return;
}
int mid=(l+r)>>1;
if(a<=mid)wen(zuo);
if(b>mid)wen(you);
}
int main()
{int x,y,xx,yy,i,j;
scanf("%d",&n);
jian(1,1,n);
while(1)
{
scanf("%s",ch);
if(ch[0]=='E')return 0;
if(ch[0]=='O')
{
scanf("%d%d%d%d",&y,&x,&yy,&xx);
if(x>xx)swap(x,xx),swap(y,yy);
if(y==yy)tu[x][y]=1;
if(x==xx)tu2[x]=1;
a=b=x;
gai(1,1,n);
a=b=xx;
gai(1,1,n);
}
if(ch[0]=='C')
{
scanf("%d%d%d%d",&y,&x,&yy,&xx);
if(x>xx)swap(x,xx),swap(y,yy);
if(y==yy)tu[x][y]=0;
if(x==xx)tu2[x]=0;
a=b=x;
gai(1,1,n);
a=b=xx;
gai(1,1,n);
}
if(ch[0]=='A')
{
scanf("%d%d%d%d",&y,&x,&yy,&xx);
if(x>xx)swap(x,xx),swap(y,yy);
// zj
yici=1;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
lin[i][j]=0;
a=x;
b=xx;
wen(1,1,n);
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
zj[i][j]=lin[i][j];
//sd
yici=1;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
lin[i][j]=0;
a=1;
b=x;
if(a<=b) wen(1,1,n);
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
sd[i][j]=lin[i][j];
//hn
yici=1;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
lin[i][j]=0;
a=xx;
b=n;
if(a<=b) wen(1,1,n);
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
hn[i][j]=lin[i][j];
bool ky=0;
if(y==1&&yy==1)
{
if(sd[2][4]&&zj[3][4]&&hn[1][3])ky=1;
if(zj[1][2])ky=1;
}
if(y==2&&yy==1)
{
if(zj[3][4]&&hn[1][3])ky=1;
if(zj[1][2]&&sd[2][4])ky=1;
if(zj[3][2])ky=1;
}
if(y==2&&yy==2)
{
if(sd[2][4]&&zj[2][1]&&hn[1][3])ky=1;
if(zj[3][4])ky=1;
}
if(y==1&&yy==2)
{
if(zj[3][4]&&sd[2][4])ky=1;
if(zj[1][2]&&hn[1][3])ky=1;
if(zj[1][4])ky=1;
}
if(ky)printf("Y\n");
else printf("N\n");
}
}
}

2017.9.9 堵塞的交通 思考记录相关推荐

  1. 2017.10.5 最短母串 思考记录

    这个题n<=15,可以用10表示选取情况下的最优值 预处理两个串之间的连接关系,然后枚举状态转移 然而这个题还要输出方案,,而且还不让你开空间. 所以只能记录前继动态判断.. 所以十分难写难调 ...

  2. 2017.9.26 块的计数 思考记录

    这种题就属于那种描述很简单,要求很简单,但就是无从下手的题 这个题我只有n根n做法..枚举因数检验.. 首先对于任何块的大小,方案唯一,这是显然的,,如果划分位置改变1,一定有一个位置+1,一个位置- ...

  3. 2017.8.8 魔兽地图DotR 思考记录

    假题害人..  明明说了是一棵树,却还要强行加一组坑爹数据   所以网上的题解挂了好多 这题是很综合的树上背包问题. 由依赖关系转化为一些枚举来跑多重背包 由于是 "一棵树" 所以 ...

  4. 2017.3.25 魔术球问题 思考记录

    这个题还是不难的..(想了20分钟就出完解) 二分+网络流检验,,能加在上面的数大的向小的连边 总点数-最大匹配>n    :{l=mid+1,      记录答案       } else   ...

  5. 2017.10.23 chess 中国象棋 思考记录

    这种题的一般解法: 1. 发现状压可以搞,然后发现状态爆炸 2.考虑状态特点,一共只有几种可能的状态 3.考虑可不可以只对状态进行计数 4.离散统计贡献 码: #include<iostream ...

  6. 2017.10.19 起床困难综合征 思考记录

    2333noi送分题 首先暴力试每个数有些二进制位是会重复算的,,所以就考虑能否把每个二进制位独立考虑 老性质:二进制运算每一位独立 所以二进制dp,如果这一位输入1,是多少,输入0,是多少 然后按二 ...

  7. 2017.10.11 network 网络扩容 思考记录

    第一问是网络流. 第二问是费用流,但之前的边依然是可以用的,所以每个点决策:用原来的流量    购买一条流量,扫每条边加进去就可以了 然后限制流出为k 码: #include<iostream& ...

  8. 2017.10.7 弹飞绵羊 思考记录

    ..这个题根据弹后的关系是很容易想出一个森林的..修改连接关系就是cut和link.. 但是分块的做法似乎十分优越,,好写好调.所以学一下分块的写法 首先每一个区间的信息都是可以做到O(1)查询的.. ...

  9. 2017.10.1 互不侵犯king 思考记录

    ..没想到做的这么顺利 首先n<=⑨.. 所以状压这个⑨ 然后枚举状态转移累加即可 f[行数][最上层排布情况][已经用了几个] 最后    Σf[n][i][k]   0<=i<2 ...

最新文章

  1. 几句话描述简单算法——排序与搜索
  2. 微信小程序textArea组件字数限制
  3. IPv6域名解析服务基础
  4. linux内核编译如何选择cpu类型,Ubuntu内核编译和CPU Hot-Plug特性配置全过程及遇到问题记录...
  5. Case 2-1:用空间平滑法分析华南地区的TAI语地名分布
  6. 虚拟机如何配置网络ip地址_木杉入门Elasticsearch(2):虚拟机IP地址配置
  7. 招加盟的外卖店,是怎么做到每月10000+单量的?一个餐饮小店,靠外卖年收入过百万是真的吗?
  8. 试着用java实现DNS(一)——DatagramSocket, DatagramPacket, Message
  9. 条码枪接入智能网关,通过条码查询数据库,数据写入PLC寄存器
  10. 系统设计(二)如何写技术设计文档
  11. BZOJ1001狼抓兔子(网络流最小割)
  12. MKV文件提取dts音频转化成ac3
  13. 柳州哪里有短视频创业直播基地?柳州市互联网协会为您精选4家
  14. python生成正态分布矩阵_统计学习 | 矩阵正态分布 (matrix normal distribution)
  15. Android 自定义View(一)实现时钟表盘效果
  16. 苹果手机Home键失灵怎么办?
  17. Unity 动画系统:Animator
  18. 浅析3种电池容量监测方案
  19. Bootstrap--简易上手
  20. Prime95怎么使用?Prime95烤机教程

热门文章

  1. 红橙Darren视频笔记 网络请求优化方案 OOP面向对象 6大基本原则
  2. conda报错Collecting package metadata
  3. 贪 心 学用markdown
  4. promise封装读取文件
  5. php判断ipv6是否在范围内,[PHP] IPv6檢查IP是否在某個網段內 mtachcidr6
  6. 设置go path_Go命令的PATH安全性
  7. c语言列车调度 栈,这个用栈调度火车的程序到底是怎么回事?
  8. 六界仙尊h5服务器维护多久,《六界仙尊》5月6日更新维护 公开虚天BOSS坐标
  9. 计算机表演赛vr创意大赛,计算机表演赛新增VR创意大赛
  10. 无法往开启kerberos的zookeeper上注册服务_笔记本WiFi信号满格,却无法上网怎么搞?...