BZOJ3226: [Sdoi2008]校门外的区间
感觉很有趣的题呢。
每个点拆成两个,线段树维护。
不过这题难点其实在输入输出。
- #include<bits/stdc++.h>
- #define N (65535<<1)
- #define M (l+r>>1)
- #define P (k<<1)
- #define S (k<<1|1)
- #define K l,r,k
- #define L l,M,P
- #define R M+1,r,S
- #define Z \
- int l=0,int r=N,int k=1
- int u[1<<18],v[1<<18],a[N+10];
- template<int d>
- void same(int k){
- u[k]=d;
- v[k]=0;
- }
- void flip(int k){
- (~u[k]?u[k]:v[k])^=1;
- }
- void (*operate[3])(int)
- ={same<0>,same<1>,flip};
- void devolve(int k){
- int d=v[k]?2:u[k];
- if(~d){
- operate[d](P);
- operate[d](S);
- v[k]=0;
- u[k]=-1;
- }
- }
- void A(int d,int s,int t,Z){
- if(s==l&&t==r)
- operate[d](k);
- else{
- devolve(k);
- if(t<=M)
- A(d,s,t,L);
- else if(s>M)
- A(d,s,t,R);
- else{
- A(d,s,M,L);
- A(d,M+1,t,R);
- }
- }
- }
- void finish(Z){
- if(~u[k])
- for(int i=l;i<=r;++i)
- a[i]=u[k];
- else{
- devolve(k);
- finish(L);
- finish(R);
- }
- }
- bool empty(){
- for(int i=0;i<=N;++i)
- if(a[i])
- return 0;
- return 1;
- }
- int main(){
- memset(u,-1,sizeof u);
- char d[2],b[16];
- while(~scanf("%s%s",d,b)){
- char u,v;
- int s,t;
- sscanf(b,"%c%d,%d%c",&u,&s,&t,&v);
- s=s*2+(u=='(');
- t=t*2-(v==')');
- if(s>t)
- continue;
- switch(*d){
- case'D':
- A(0,s,t);
- break;
- case'U':
- A(1,s,t);
- break;
- case'S':
- A(2,s,t);
- break;
- default:
- if(s)
- A(0,0,s-1);
- if(t!=N)
- A(0,t+1,N);
- if(*d=='C')
- A(2,s,t);
- }
- }
- finish();
- if(empty())
- puts("empty set");
- else
- for(int i=0;i<=N;++i){
- if((!i||!a[i-1])&&a[i])
- printf("%c%d,",i&1?'(':'[',i>>1);
- if(a[i]&&!a[i+1])
- printf("%d%c ",i+1>>1,i&1?')':']');
- }
- }
BZOJ3226: [Sdoi2008]校门外的区间的更多相关文章
- BZOJ3226[Sdoi2008]校门外的区间 题解
题目大意: 有5种运算维护集合S(S初始为空)并最终输出S. 5种运算如下: U T S∪T I T S∩T D T S-T C T T-S S T S⊕T 基本集合运算如下: A∪B {x : ...
- [bzoj3226][Sdoi2008]校门外的区间——线段树
题目 略 题解 直接套黄学长模板. Orz 代码 #include <bits/stdc++.h> using namespace std; #define ll long long #d ...
- 【分块】bzoj3226 [Sdoi2008]校门外的区间
题解见 : http://blog.csdn.net/iamzky/article/details/41088151 ORZ ZKY 2个懒标记:是否翻转,覆盖成了什么. 怎么处理一个块上有两个标记的 ...
- bzoj 3226 [Sdoi2008]校门外的区间(线段树)
3226: [Sdoi2008]校门外的区间 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 615 Solved: 227[Submit][Stat ...
- 3226. [SDOI2008]校门外的区间【线段树】
Description 受校门外的树这道经典问题的启发,A君根据基本的离散数学的知识,抽象出5种运算维护集合S(S初始为空)并最终输出S.现在,请你完成这道校门外的树之难度增强版——校门外的区间. ...
- 「BZOJ3226」[Sdoi2008]校门外的区间
题目 首先是开闭区间的处理,我们把\(1.5\)这种数加进来,用\([1.5,6]\)来表示\((2,6]\) 根据离散数学的基本知识,尝试把五个操作转化成人话 把\([x,y]\)变成\(1\) 把 ...
- BZOJ 3226: [Sdoi2008]校门外的区间
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3226 题意:初始集合S为空.模拟四种集合操作:集合并.交.差.补集并. 思路:区间 ...
- 3226: [Sdoi2008]校门外的区间
链接 思路 bug漫天飞... 维护一颗线段树,支持区间赋值,和区间异或.因为会处理到一些方括号还是圆括号的问题,所以对于每一个下标都乘2,假设中间有一个.5即可,都变成了方括号,输出在处理一下. U ...
- [SDOI2008] 校门外的区间 - 线段树
U T 即将区间 \(T\) 范围赋值为 \(1\) I T 即将区间 \(U - T\) 范围赋值为 \(0\) D T 即将区间 \(T\) 赋值为 \(0\) C T 由于 \(S=T-S=T( ...
随机推荐
- [BZOJ1299]巧克力棒(博弈论)
题目:http://hzwer.com/1976.html 分析:先Orz hzwer 对于盒子外面的巧克力棒,就是Nim游戏. 所以就很容易想到先手第一步最好从盒子中取出m根巧克力棒,使得这些巧克力 ...
- 关于图像文章垂直无缝连接滚动——JS实现
<!-- 作者:chenyehuacecil@163.com 时间:2015-02-04 描述:实现整篇文章从下到上的无缝连接滚动--><html xmlns="http: ...
- 页面切换语言包使用session不用cookie
cookie的问题,ifame中的cookie不一致 在父页面设置的语言包cookie,在iframe中获取不到.为什么呢? 为什么语言包这个事跟cookie过不去,有什么特殊的? iframe的sr ...
- 网站移植到linux上后常犯的错误
常犯的错误 1:gcc库没装或者没装全 表现:没有可用的C编译器 同类错误:提示g++ not found, 解决:出现以上错误,则是因为gcc编译器没装,或者是没装全. 挂载光盘,到Pakeges里 ...
- applicationContext.xml和dispatcher-servlet.xml的区别
在SpringMVC项目中我们一般会引入applicationContext.xml和dispatcher-servlet.xml两个配置文件,这两个配置文件具体的区别是什么呢? Spring 官方文 ...
- 高手详解SQL性能优化十条经验
1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 解决办法: 其实只需要对该脚本略做改进,查询速度便会 ...
- IntelliJ_编译一直报错“找不到符号”
执行maven compile时一直报错"找不到符号",类 XXX 各种clean.compile都不行 最后执行Rebuild Project一次后解决 执行rebuild ...
- javascript 数组实例
在遍历数组时, 如果想要排除 null / undefined 和 不存在的元素时,代码如下: for ( var i = 0; i < a.length; i++ ){ //跳过null / ...
- 通过javascript在网页端解压zip文件并查看压缩包内容
WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说: 如果前端的代 ...
- bbs树形打印(一)
前言:大家在bbs回帖时常常可以看到树形的回复形式. dfs设计 (1) 为使得Connection仅打开一次,因此以conn作为其中一个递归参数,在递归全程不关闭conn; (2)根据存入数据的树状 ...