poj3225 线段树区间操作 (见鬼)
细节处理实在太重要了。
#include<cstdio>
#include<cstring>
#define MT 65533*4
#define Maxn MT*4
int i,x,y,now,k;
int xo[Maxn],e[Maxn],pd[MT];
char a,b,c;
inline void work(int k,int rt){
if(k<2){
xo[rt]=0;
e[rt]=k;
}else{
if(e[rt]>-1)
e[rt]^=1;
else
xo[rt]^=1;
}
}
void PushDown(int rt){
if(e[rt]>-1){
e[rt*2+1]=e[rt*2]=e[rt];
e[rt]=-1;
}
else{
if(e[rt*2]>-1) {e[rt*2]^=xo[rt]; xo[rt*2]=0;}
else xo[rt*2]^=xo[rt];
if(e[rt*2+1]>-1) {e[rt*2+1]^=xo[rt];xo[rt*2+1]=0;}
else xo[rt*2+1]^=xo[rt];
}
xo[rt]=0;
}
void ins(int k,int x,int y,int l,int r,int rt){
if(x<=l&&y>=r){
work(k,rt);
return;
}
PushDown(rt);
int m=(l+r)/2;
if(x<=m) ins(k,x,y,l,m,rt*2);
if(y>m) ins(k,x,y,m+1,r,rt*2+1);
}
void query(int l,int r,int rt){
if(e[rt]==1) {
for(int i=l;i<=r;i++)
pd[i]=1;
return;
}
if(e[rt]==0) return;
if(l>=r) return;
PushDown(rt);
int m=(l+r)/2;
query(l,m,rt*2);
query(m+1,r,rt*2+1);
}
int main()
{
while(scanf("%c %c%d,%d%c\n",&a,&b,&x,&y,&c)!=EOF){
if(b=='[') x=2*x; else x=2*x+1;
if(c==']') y=2*y; else y=2*y-1;
switch (a){
case 'U':
ins(1,x,y,0,MT,1);
break;
case 'I':
ins(0,0,x-1,0,MT,1);
ins(0,y+1,MT,0,MT,1);
break;
case 'D':
ins(0,x,y,0,MT,1);
break;
case 'C':
ins(0,0,x-1,0,MT,1);
ins(0,y+1,MT,0,MT,1);
ins(2,x,y,0,MT,1);
break;
case 'S':
ins(2,x,y,0,MT,1);
break;
}
}
query(0,MT,1);
k=0;
for(i=0;i<MT;i++)
if(1==pd[i]){
if(0==i||pd[i-1]==0){
if(i%2==0) printf("[%d",i/2);
else printf("(%d",(i-1)/2);
}
if(MT-1==i||pd[i+1]==0){
if(i%2==0) printf(",%d] ",i/2);
else printf(",%d) ",(i+1)/2);
}
k=1;
}
if(!k) printf("empty set\n");
return 0;
}
poj3225 线段树区间操作 (见鬼)的更多相关文章
- poj3225(线段树区间更新&hash)
题目链接: http://poj.org/problem?id=3225 题意: 初始给一个全局为 0~65536 的区间 s, 然后不断地对区间 s 进行 并, 交, 差, 相对差等运算, 输出最 ...
- Bzoj 1798: [Ahoi2009]Seq 维护序列seq(线段树区间操作)
1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小可 ...
- POJ 2528 ——Mayor's posters(线段树+区间操作)
Time limit 1000 ms Memory limit 65536 kB Description The citizens of Bytetown, AB, could not stand t ...
- 线段树(区间操作) POJ 3325 Help with Intervals
题目传送门 题意:四种集合的操作,对应区间的01,问最后存在集合存在的区间. 分析:U T [l, r]填充1; I T [0, l), (r, N]填充0; D T [l, r]填充0; C T[0 ...
- POJ 3225 Help with Intervals --线段树区间操作
题意:给你一些区间操作,让你输出最后得出的区间. 解法:区间操作的经典题,借鉴了网上的倍增算法,每次将区间乘以2,然后根据区间开闭情况做微调,这样可以有效处理开闭区间问题. 线段树维护两个值: cov ...
- HDU - 6315(2018 Multi-University Training Contest 2) Naive Operations (线段树区间操作)
http://acm.hdu.edu.cn/showproblem.php?pid=6315 题意 a数组初始全为0,b数组为1-n的一个排列.q次操作,一种操作add给a[l...r]加1,另一种操 ...
- HDU 4578——Transformation——————【线段树区间操作、确定操作顺序】
Transformation Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 65535/65536 K (Java/Others)T ...
- 吉首大学校赛 K 白山茶与红玫瑰 (线段树区间操作)
链接:https://ac.nowcoder.com/acm/contest/925/K来源:牛客网 题目描述 公元2019年6月22日,白山茶王国与红玫瑰王国展开大战,在世外仙境——天空花园处,双方 ...
- COJ 1010 WZJ的数据结构(十) 线段树区间操作
传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=1001 WZJ的数据结构(十) 难度级别:D: 运行时间限制:3000ms: ...
随机推荐
- ES6学习笔记(十四)
1.Promise的含义 Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Prom ...
- dapper extensions (predicates)
https://github.com/tmsmith/Dapper-Extensions/wiki/Predicates The predicate system in Dapper Extensio ...
- Opencv Mat的操作
cout << mat 有错误的原因 You are using OpenCV built with VS10. The ostream operator << in the ...
- Security log is full,only administrator can log on to fix the problem(安全日志满了)
When you login the system and see this error “Security log on this system is full,only administrato ...
- 使用JS来实现验证码功能
最近想为自己的Django博客添加验证码功能,本来想使用第三方库来实现的,不过考虑到添加第三方库对性能的影响,以及第三方库是否安全可靠的问题,还是用自己的代码来实现吧.反正用JS来实现验证码功能又不是 ...
- 十七、mysql 分区之 锁问题
1.演示一个表锁,基于myisam CMD 1 CMD2 create table e1 (id int ,name char(20)); lock table e1 read; [select|in ...
- IBM MQ
一,安装 1,先安装必备MQ\MQ60\Prereqs\IES\Setup.exe 2,再安装MQ\MQParms.exe 二,发送方 刚装好后,默认有一个管理器名,可以删除,自己重新建,以防有不可知 ...
- bootstrap 框架选型过程
1.看有没有帮助文档,帮助文档的完整程度. 2.是否是我们业务需要的,花哨的功能真的有用吗? 对于偏pc端使用的系统 toggles意义不大 bootstrap和extjs的区别是什么呢? easyU ...
- 【BZOJ 1497】 [NOI2006]最大获利
Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一 ...
- C# Windows - TabControl
TabControl控件的属性 - 一般用于控制TabPages对象容器的外观,特别是显示的选项卡的外观 属性 说明 Alignment 控制选项卡在选项卡控件的什么位置显示 Appearance 控 ...