POJ 3225 Help with Intervals
U:把区间[l,r]覆盖成1
I:把[0,l-1][r+1,∞]覆盖成0
D:把区间[l,r]覆盖成0
C:把[0,l-1][r+1,∞]覆盖成0 , 且[l,r]区间0/1互换(即异或)
S:[l,r]区间0/1互换
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include <iostream>
#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define debug(x) printf(#x"= %d\n",x);
#define N 140000
using namespace std;
int Val[N*],Xor[N*];
bool mark[N];
const int maxn =(<<);
void build(int l,int r,int i)
{
Val[i]=-;
Xor[i]=;
if(l!=r)
{
int mid=(l+r)>>;
build(l,mid,L(i));
build(mid+,r,R(i));
}
}
void pushdown(int i)
{
if(Val[i]!=-)
{
Xor[L(i)]=Xor[R(i)]=;
Val[L(i)]=Val[R(i)]=Val[i];
Val[i]=-;
}
if(Xor[i])
{
Xor[L(i)]^=;
Xor[R(i)]^=;
Xor[i]=;
}
}
void update(int l,int r,int pl,int pr,int type,int va,int i)
{
if(l>=pl&&r<=pr)
{
if(type==){Xor[i]=;Val[i]=va;return;}
else {
Xor[i]^=;
return;
}
}
pushdown(i);
int mid=(l+r)>>;
if(pl<=mid)update(l,mid,pl,pr,type,va,L(i));
if(pr>mid)update(mid+,r,pl,pr,type,va,R(i));
}
void query(int l,int r,int i)
{
if(l==r)
{
if(Val[i]==-)Val[i]=;
Val[i]^=Xor[i];
if(Val[i])
mark[l]=true;
return ;
}
pushdown(i);
int mid=(l+r)>>;
query(l,mid,L(i));
query(mid+,r,R(i));
}
void solve(int l,int r,int pl,int pr,char type)
{
if(type=='U')update(l,r,pl,pr,,,);
else if(type=='I'){
if(pl->=)
update(l,r,,pl-,,,);
update(l,r,pr+,maxn,,,);
}
else if(type=='D'){
update(l,r,pl,pr,,,);
}
else if(type=='C'){
if(pl->=)
update(l,r,,pl-,,,);
update(l,r,pr+,maxn,,,);
update(l,r,pl,pr,,,);
}
else
{
update(l,r,pl,pr,,,);
} } int main() {
char a,b,c,d;
int l,r;
build(,maxn,);
while(scanf(" %c %c %d %c %d %c",&a,&b,&l,&c,&r,&d)!=EOF)
{
l<<=;
r<<=;
if(b=='(')l++;
if(d==')')r--;
if(l>r)
{
if(a=='I'||a=='C')
{
Val[]=Xor[]=;
}
}
else
solve(,maxn,l,r,a);
}
memset(mark,,sizeof(mark));
query(,maxn,);
int st,ed;
st=ed=-;
int first=;
for(int i=;i<=maxn;++i)
{
if(mark[i]){
if(st==-)st=i;
ed=i;
}
else if(st!=-)
{
if(!first)
printf(" ");
if(st&)printf("(");
else printf("[");
printf("%d,%d",(st>>),((ed+)>>));
if(ed&)printf(")");
else printf("]");
st=-;
first=;
}
}
if(first)printf("empty set");
puts("");
return ;
}
POJ 3225 Help with Intervals的更多相关文章
- POJ 3225 Help with Intervals(线段树)
POJ 3225 Help with Intervals 题目链接 集合数字有的为1,没有为0,那么几种操作相应就是置为0或置为1或者翻转,这个随便推推就能够了,然后开闭区间的处理方式就是把区间扩大成 ...
- poj 3225 Help with Intervals(线段树,区间更新)
Help with Intervals Time Limit: 6000MS Memory Limit: 131072K Total Submissions: 12474 Accepted: ...
- (中等) POJ 3225 Help with Intervals , 线段树+集合。
Description LogLoader, Inc. is a company specialized in providing products for analyzing logs. While ...
- POJ 3225 Help with Intervals --线段树区间操作
题意:给你一些区间操作,让你输出最后得出的区间. 解法:区间操作的经典题,借鉴了网上的倍增算法,每次将区间乘以2,然后根据区间开闭情况做微调,这样可以有效处理开闭区间问题. 线段树维护两个值: cov ...
- ●线段树的三个题(poj 3225,hdu 1542,hdu 1828)
●poj 3225 Help with Intervals(线段树区间问题) ○赘述题目 给出以下集合操作: 然后有初始的一个空集S,和以下题目给出的操作指令,并输入指令: 要求进行指令操作后,按格式 ...
- poj 3225 【线段树】
poj 3225 这题是用线段树解决区间问题,看了两天多,算是理解一点了. Description LogLoader, Inc. is a company specialized in provid ...
- 【POJ 1716】Integer Intervals(差分约束系统)
id=1716">[POJ 1716]Integer Intervals(差分约束系统) Integer Intervals Time Limit: 1000MS Memory L ...
- POJ 3225 (线段树 区间更新) Help with Intervals
这道题搞了好久,其实坑点挺多.. 网上找了许多题解,发现思路其实都差不多,所以就不在重复了. 推荐一篇比较好的题解,请戳这. 另外,如果因为可能要更新多次,但最终查询只需要一次,所以没有写pushup ...
- poj 3225 间隙(横截面和填充操作)
http://poj.org/problem?id=3225 一道题又做了一天. .这道题对我来说起初有N多难点. 1:区间的开闭怎样解决. . 2:如何把区间的交并补.对称差转化为对线段树的操作. ...
随机推荐
- html,CSS文字大小单位px、em、pt的关系换算
html,CSS文字大小单位px.em.pt的关系换算 这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷.我一直也搞不清楚px与 ...
- ajax 、ajax的交互模型、如何解决跨域问题
1.ajax是什么? — AJAX全称为“AsynchronousJavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术. — 不是一种新技 ...
- mysql 查询开销 sending data
1.执行一个查询,发现时间开销都在sending data,为什么?2.sending data容易误导,让人以为只是发送数据给客户端,实际上sending data包含两个过程:读取数据并处理,发送 ...
- C# Socket编程(3)编码和解码
在网络通信中,很多情况下:比如说QQ聊天,通讯双方直接传递的都是字符信息.但是字符信息并不能够直接通过网络传输,这些字符集必须先转换成一个字节序列后才能够在网络中传输,于是这里就产生了编码和解码的概念 ...
- kafka - topic
http://www.cnblogs.com/yurunmiao/p/5550906.html http://www.cnblogs.com/chushiyaoyue/p/5695826.html
- 判断手机连接的是fdd还是tdd的办法
判断手机连接的是fdd还是tdd的办法http://bbs.ydss.cn/thread-550035-1-1.html移动4G一般都是tdd,联通则可能有tdd,还有可能是fdd,判断手机连接的是t ...
- 【转】 FPGA设计的四种常用思想与技巧
本文讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是FPGA/CPLD逻辑设计的内在规律的体现,合理地采用这些设计思想能在FPGA/CPLD设计工作 ...
- 日期操作类--SimpleDateFormat类
使用SimpleDateFormat格式化日期 SimpleDateFormat是一个以语言环境敏感的方式来格式化和分析日期的类.SimpleDateFormat允许你选择任何用户自定义日期时间格式来 ...
- MySQL通用优化手册
转载: MySQL通用优化手册 内容提纲 MySQL的特点: 硬件.系统优化: MySQL 配置优化: SCHEMA设计优化: SQL 优化: 其他优化. MySQL 的特点 首先,需要明确的是.想要 ...
- web前端页面性能优化小结
影响用户访问的最大部分是前端的页面.网站的划分一般为二:前端和后台.我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为文章发表评论等等.而前端呢?其实应该是属于功能的表现. 而我 ...