2017.5.12 校门外的区间 思考记录
来源:互联网 发布:爱的算法 mobi 编辑:程序博客网 时间:2024/06/05 15:03
这题很裸,只要维护单点1,0就行了、、
不同运算表示 :
u : 全1
d : 全0
i : 以外全0
c : 取反,以外取0
s :取反
线段树标记记得下传时当前点标记清零 ,然后就没了
犯的错误: 1、 标记忘清零、
2、 小数时的括号
3、特判!!!0!!! 0!!!!0 !!!!
码:
#include<iostream>#include<cstdio>using namespace std;#define zuo l,mid,o<<1#define you mid+1,r,o<<1|1#define N 131075 int quan1[N<<2],quan0[N<<2],rev[N<<2],a,b,op,la,lb,i,lin; char ch,zkh,ykh,douhao;bool yes,lianxu,jieshu,yici=1;void down(int o){if(quan0[o]==1) { quan0[o<<1]=1; quan1[o<<1]=0; rev[o<<1]=0; quan0[o<<1|1]=1; quan1[o<<1|1]=0; rev[o<<1|1]=0; }if(quan1[o]==1) { quan0[o<<1]=0; quan1[o<<1]=1; rev[o<<1]=0; quan0[o<<1|1]=0; quan1[o<<1|1]=1; rev[o<<1|1]=0; }if(rev[o]==1){ rev[o<<1]^=1; rev[o<<1|1]^=1; }rev[o]=0;quan0[o]=0;quan1[o]=0;}void gai(int l,int r,int o){if(l!=r)down(o);if(a<=l&&r<=b){if(op==1){rev[o]=0;quan1[o]=1;quan0[o]=0;}if(op==2){rev[o]=0;quan1[o]=0;quan0[o]=1;}if(op==3){rev[o]^=1;}if(l!=r)down(o);return;}int mid=(l+r)>>1;if(a<=mid)gai(zuo);if(b>=mid+1)gai(you);}void zhao(int l,int r,int o) {if(l!=r)down(o);if(l==r){ lin=0;if(quan0[o])lin=0;if(quan1[o])lin=1;if(rev[o])lin^=1; return ; } int mid=(l+r)>>1;if(a<=mid)zhao(zuo);if(a>=mid+1)zhao(you);}int main(){ while(1){if(scanf("%c",&ch)==EOF)break;while((ch==' '||ch=='\n'||ch=='\r'))if(scanf("%c",&ch)==EOF){jieshu=1;break;}if(jieshu)break;scanf("%c",&zkh);scanf("%c",&zkh);scanf("%d",&a);scanf("%c",&douhao);scanf("%d",&b);scanf("%c",&ykh);a*=2;b*=2;if(zkh=='(')a++;if(ykh==')')b--; if(ch=='U'){ op=1; gai(1,N,1);}if(ch=='I'){op=2;la=a;lb=b;a=1;b=la-1;if(b>=a)gai(1,N,1);a=lb+1;b=N;if(b>=a)gai(1,N,1);}if(ch=='D'){op=2;if(b>=a)gai(1,N,1);}if(ch=='C'){op=3;gai(1,N,1);op=2;la=a;lb=b;a=1;b=la-1;if(b>=a)gai(1,N,1);a=lb+1;b=N;if(b>=a)gai(1,N,1);}if(ch=='S'){op=3;if(b>=a)gai(1,N,1);}}for(i=0;i<=131071;i++){a=i;lin=0;zhao(1,N,1);if(lin==1){yes=1;if(lianxu==1){continue;}if(lianxu==0){lianxu=1;if(a%2==1){if(!yici)printf(" (%d,",a/2); else {yici=0;printf("(%d,",a/2); }}else if(!yici)printf(" [%d,",a/2); else {yici=0;printf("[%d,",a/2); }} }else { if(lianxu==0){continue;}if(lianxu==1){lianxu=0;if(a%2==1){printf("%d]",a/2);}else printf("%d)",a/2);}}}if(yes==0){cout<<"empty set";}}
0 0
- 2017.5.12 校门外的区间 思考记录
- 校门外的区间(interval)
- 校门外的树 区间处理
- BZOJ 3226 [SDOI2008]校门外的区间
- 【SDOI2008】【BZOJ3226】校门外的区间
- 3226: [Sdoi2008]校门外的区间
- 【bzoj3226】[Sdoi2008]校门外的区间
- BZOJ3226 [Sdoi2008]校门外的区间
- 3226: [Sdoi2008]校门外的区间
- bzoj 3226: [Sdoi2008]校门外的区间
- 【BZOJ】【P3226】【Sdoi2008】【校门外的区间】【题解】【线段树】
- bzoj3226: [Sdoi2008]校门外的区间 线段树
- 3226: [Sdoi2008]校门外的区间 线段树
- [线段树 标记] BZOJ 3226 [Sdoi2008]校门外的区间
- 【BZOJ3226】【codevs2297】校门外的区间,线段树
- bzoj 3226: [Sdoi2008]校门外的区间(线段树)
- [BZOJ]3226: [Sdoi2008]校门外的区间 线段树
- BZOJ 题目 3226: [Sdoi2008]校门外的区间(线段树区间交并差异或)
- 浅谈为何img、input等内联元素可以设置宽高
- Ubuntu16.04下安装MySQL5.7、python3客户端mysqlclient
- nginx + tomcat 504 gateway timeout
- Qt下 QString转char*
- mysql数据库表级别的约束
- 2017.5.12 校门外的区间 思考记录
- CMU440-P2:Tribbler(发布订阅系统)
- 异步通信基石NIO模拟客户端和服务端
- 全国产品经理职位统计20170512
- 本周要看的
- win7 python3.5 启动tensorboard
- 一些文章
- Plugin execution not covered by lifecycle configuration解决
- 条款16:成对使用new和delete时要采取相同的形式