2017.3.31 洞穴勘测 思考记录
来源:互联网 发布:ubuntu好玩的游戏 编辑:程序博客网 时间:2024/05/21 10:25
lct
这题给我的感觉就是:指针真nm难调
第一次写真蛋疼
码:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define maxn 500000using namespace std; int n,m,x,y; char ss[99];struct tree{tree *ch[2],*fu; int rev;bool isrt();void down();int getwh(){return fu->ch[0]==this?0:1;} void set(int wh,tree *child);}lct[maxn];void tree::down(){if (rev){rev=0;swap(ch[0],ch[1]);ch[0]->rev^=1;ch[1]->rev^=1;}} void tree::set(int wh,tree *child){ch[wh]=child;if(child!=lct)child->fu=this;down();}bool tree::isrt() //这段坑死了 { if (fu==lct) {return 1; }return (fu->ch[0]!=this&&fu->ch[1]!=this);}void rotate(tree *now){ tree *fu=now->fu,*ye=now->fu->fu;if (!(fu->isrt())) ye->down();//旋转的标记要提前下放 fu->down();now->down();//有序下放 int wh=now->getwh(); fu->set(wh,now->ch[wh^1]);now->set(wh^1,fu);now->fu=ye;if(!ye->isrt())ye->ch[ye->ch[0]==fu?0:1]=now; }void splay(tree *now){ if(now->isrt()) return; for (;!(now->isrt());rotate(now)) if(!(now->fu->isrt()))now->getwh()==now->fu->getwh()?rotate(now->fu):rotate(now);}tree *access(tree *now){ tree *y=lct; for(;now!=lct;y=now,now=now->fu) splay(now),now->down(),now->set(1,y);//建一路路径右儿子为重 return y;}void huan(tree *a){ access(a)->rev^=1;//根打标记 splay(a);//在子splay里面氚标记,做根 }void link(tree *a,tree *b){ huan(a);//a换到根 a->fu=b;//把b放上去,相当于新建一棵splay access(a);//a重新为根 }void cut(tree *a,tree *b){ huan(a); //换为根 access(b); //b放到a右边,a在第二层 splay(a); a->ch[1]=b->fu=lct;}tree *zhao(tree *a){ access(a); splay(a); tree *y=a; while(y->ch[0]!=lct)y=y->ch[0]; return y;}int main(){int i; scanf("%d%d",&n,&m);lct->ch[0]=lct;lct->ch[1]=lct;lct->fu=lct;lct->rev=0;for (i=1;i<=n;i++){ (lct+i)->fu=(lct+i)->ch[0]=(lct+i)->ch[1]=lct; (lct+i)->rev=0;}for (i=1;i<=m;i++){scanf("%s",ss);scanf("%d%d",&x,&y);if(ss[0]=='C')link(lct+x,lct+y);if(ss[0]=='D'){cut(lct+x,lct+y);//cout<<(lct+x)->ch[0];}if(ss[0]=='Q'){if(zhao(lct+x)==zhao(lct+y))printf("Yes\n");else printf("No\n");}}}
0 0
- 2017.3.31 洞穴勘测 思考记录
- [Sdoi2008]Cave 洞穴勘测
- bzoj 2049 洞穴勘测
- bzoj2049 洞穴勘测 lct
- BZOJ2049Cave 洞穴勘测
- BZOJ2049 洞穴勘测 LCT
- [BZOJ2049] [SDOI2008] 洞穴勘测
- BZOJ 2049, 洞穴勘测
- 【bzoj2049】【LCT】洞穴勘测
- 【SDOI2008】洞穴勘测
- 【SDOI2008】bzoj2049 洞穴勘测
- LCT(洞穴勘测)
- bzoj2049Cave 洞穴勘测
- bzoj2049 Cave 洞穴勘测
- [SDOI2008]Cave 洞穴勘测
- bzoj-2049 Cave 洞穴勘测
- 【SDOI2008】【BZOJ2049】Cave 洞穴勘测
- [bzoj2049][SDOI2008]Cave 洞穴勘测
- pat乙级1027
- pdfmake使用自定义字体
- BufferedReaderAndWriter
- 为人民服务—JAXB
- 【设计模式】观察者模式
- 2017.3.31 洞穴勘测 思考记录
- django 1.10版本解决中CSRF问题
- edas 论文上传
- 车机HMI液晶屏车机的安全方案
- HDU3499
- 基于docker的产品缺陷验证,修复,测试全流程简化工具 之 第一章 准备篇
- C/C++中const 关键字详解
- Mybatis技术内幕
- Java实现网络爬虫爬取网页链接并设置搜索深度(广搜)