链接

思路

  bug漫天飞。。。

  维护一颗线段树,支持区间赋值,和区间异或。因为会处理到一些方括号还是圆括号的问题,所以对于每一个下标都乘2,假设中间有一个.5即可,都变成了方括号,输出在处理一下。

  • U  [l,r]赋值为1
  • I   [0,l-1],[r+1,n]赋值为0
  • D [l,r]区间涂0
  • C [0,l-1],[r+1,n]赋值为0,[l,r]区间异或
  • S [l,r]区间异或

bug列表:乘2后从0开始,因为0*2=0,0.5*2=1,zz的居然是从2开始的。。

读入的区间并不都是一位数。。。

 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream> using namespace std;
const int N = ; int tag[N],xr[N],ans[N];
char opt[],s[];
bool fir = true; #define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1 void pushdown(int rt) {
if (tag[rt]!=-) {
tag[rt<<] = tag[rt<<|] = tag[rt];
xr[rt<<] = xr[rt<<|] = ;
tag[rt] = -;
}
if (xr[rt]) {
xr[rt<<] ^= ;xr[rt<<|] ^= ;
xr[rt] = ;
}
}
void update(int l,int r,int rt,int L,int R,int x) {
if (L <= l && r <= R) {
if (x != -) tag[rt] = x,xr[rt] = ;
else xr[rt] ^= ;
return ;
}
pushdown(rt);
int mid = (l + r) / ;
if (L <= mid) update(lson,L,R,x);
if (R > mid) update(rson,L,R,x);
}
void query(int l,int r,int rt) {
if (l == r) {
if (tag[rt]!=-) ans[l] = tag[rt];
ans[l] ^= xr[rt];
return ;
}
pushdown(rt);
int mid = (l + r) / ;
query(lson);query(rson);
}
void get(int &L,int &R) {
char c=getchar();int flag;
while (c!='('&&c!='[') c=getchar();
scanf("%d",&L);
flag = (c=='('); L = (L*)+flag;
c = getchar();scanf("%d",&R);c = getchar();
flag = -(c!=']');R = (R*)+flag;
}
int main () { int n = ,L,R,lt;
memset(tag,-,sizeof(tag)); while (scanf("%s",opt)!=EOF) {
get(L,R); //-
if (opt[]=='U') {
update(,n,,L,R,);
}
else if (opt[]=='I') {
if (L- >= ) update(,n,,,L-,);
if (R+ <= n) update(,n,,R+,n,);
}
else if (opt[]=='D') {
update(,n,,L,R,);
}
else if (opt[]=='C') {
if (L- >= ) update(,n,,,L-,);
if (R+ <= n) update(,n,,R+,n,);
update(,n,,L,R,-);
}
else {
update(,n,,L,R,-);
}
}
query(,n,);
int pos=,flag=;
for (int i=; i<=n; i=pos+) {
pos=i;
if (!ans[i]) continue;
if (flag) printf(" ");
flag=; while (ans[pos+]) pos++;
if (i&) printf("(%d,",i/);
else printf("[%d,",i/);
if (pos&) printf("%d)",(pos+)/);
else printf("%d]",pos/);
}
if (!flag) puts("empty set");//-
return ;
}

3226: [Sdoi2008]校门外的区间的更多相关文章

  1. bzoj 3226 [Sdoi2008]校门外的区间(线段树)

    3226: [Sdoi2008]校门外的区间 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 615  Solved: 227[Submit][Stat ...

  2. 3226. [SDOI2008]校门外的区间【线段树】

    Description   受校门外的树这道经典问题的启发,A君根据基本的离散数学的知识,抽象出5种运算维护集合S(S初始为空)并最终输出S.现在,请你完成这道校门外的树之难度增强版——校门外的区间. ...

  3. BZOJ 3226: [Sdoi2008]校门外的区间

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3226 题意:初始集合S为空.模拟四种集合操作:集合并.交.差.补集并. 思路:区间 ...

  4. 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 : ...

  5. 「BZOJ3226」[Sdoi2008]校门外的区间

    题目 首先是开闭区间的处理,我们把\(1.5\)这种数加进来,用\([1.5,6]\)来表示\((2,6]\) 根据离散数学的基本知识,尝试把五个操作转化成人话 把\([x,y]\)变成\(1\) 把 ...

  6. [SDOI2008] 校门外的区间 - 线段树

    U T 即将区间 \(T\) 范围赋值为 \(1\) I T 即将区间 \(U - T\) 范围赋值为 \(0\) D T 即将区间 \(T\) 赋值为 \(0\) C T 由于 \(S=T-S=T( ...

  7. BZOJ3226: [Sdoi2008]校门外的区间

    感觉很有趣的题呢. 每个点拆成两个,线段树维护. 不过这题难点其实在输入输出. #include<bits/stdc++.h> #define N (1<<17) #defin ...

  8. [bzoj3226][Sdoi2008]校门外的区间——线段树

    题目 略 题解 直接套黄学长模板. Orz 代码 #include <bits/stdc++.h> using namespace std; #define ll long long #d ...

  9. 【分块】bzoj3226 [Sdoi2008]校门外的区间

    题解见 : http://blog.csdn.net/iamzky/article/details/41088151 ORZ ZKY 2个懒标记:是否翻转,覆盖成了什么. 怎么处理一个块上有两个标记的 ...

随机推荐

  1. [MedicalEndoscope]PFC介绍

    PFC的英文全称为“Power Factor Correction”,意思是“功率因数校正”,功率因数指的是有效功率与总耗电量(视在功率)之间的关系,也就是有效功率除以总耗电量(视在功率)的比值. 基 ...

  2. 解压war包

    unzip cat-alpha-3.0.0.war -d /tmp/test 说明:-d指定解压的路径和文件,文件名不存在会自动创建

  3. html中如何使用python屏蔽一些基本功能

    进行数据解析的理由不计其数,相关的工具和技巧也同样如此.但是,当您需要用这些数据做一些新的事情时,即使有“合适的”工具可能也是不够的.这一担心对于异类数据源的集成同样存在.用来做这项工作的合适工具迟早 ...

  4. PHP @ at 记号的作用

    看PHP的代码,总有些行前边有@符号,一直不知道是什么意思. 例如dede5.7     @$ni=imagecreatetruecolor($ftoW,$ftoH); 今天用到了,就记一下吧.其实它 ...

  5. 在线文本编辑器cheditor应用实例

    CKEditor 即 FCKEDITOR . FCKeditor是眼下最棒的可见就可以得网页编辑器之中的一个,它採用JavaScript编写.具备功能强大.配置easy.跨浏览器.支持多种编程语言.开 ...

  6. 6.Netbackup-Oracle数据库恢复演练报告(下)

    1.1 Oracle数据库恢复  目录 1 安装新的客户端 2 新建异机恢复文件 3 新建数据库实例 4 建立spfile文件 5 建立数据文件夹 6 启动数据库到nomount状态 7 列出备份信息 ...

  7. JS显示上一周

    <html> <head> <script> var currDT; var aryDay = new Array("日","一&qu ...

  8. 旧文备份: CANopen的LSS子协议中文翻译

    有关节点地址和网络波特率的在线设置等:下载

  9. VisualSVN 4.0.10 破解版 附上破解过程

    VisualSVN一般情况下使用不需要破解,可以直接使用社区授权.但是社区授权不支持域用户. 如果要再域下面使用就需要破解了. 原版的VisualSVN和破解后的DLL已打包上传(仅供学习使用) 破解 ...

  10. 瓣呀,一个基于豆瓣api仿网易云音乐的开源项目

    整体采用material design 风格,本人是网易云音乐的粉丝,所以界面模仿了网页云音乐,另外,项目中尽量使用了5.0之后的新控件. 项目整体采用mvp+rxjava+retrofit 框架,使 ...