U T 即将区间 \(T\) 范围赋值为 \(1\)

I T 即将区间 \(U - T\) 范围赋值为 \(0\)

D T 即将区间 \(T\) 赋值为 \(0\)

C T 由于 \(S=T-S=T(U-S)\),即将原状态取反后,将 \(U-T\) 范围赋值为 \(0\)

S T 即将区间 \(T\) 翻转

至于开闭区间,我们不妨把下标缩放到原来的两倍,然后在输入输出的时候讨论一下即可

这题的输入真的挺正常(鬼畜)

#include <bits/stdc++.h>
using namespace std; const int N = 1000005; int a[N],tag[N],rev[N],n,m,t1,t2,t3; void settag(int p) {
rev[p]=0; tag[p]=1;
} void setrev(int p) {
rev[p]^=1;
} void pushdown(int p) {
if(tag[p]) {
tag[p*2]=tag[p*2+1]=1;
rev[p*2]=rev[p*2+1]=0; // Error
tag[p]=0;
}
if(rev[p]) {
rev[p*2]^=1;
rev[p*2+1]^=1;
rev[p]=0;
}
} void modify(int p,int l,int r,int ql,int qr,int ist,int isr) {
if(ql > qr) return;
if(l>qr || r<ql) return;
if(l>=ql && r<=qr) {
if(ist) settag(p);
if(isr) setrev(p);
}
else {
pushdown(p);
modify(p*2,l,(l+r)/2,ql,qr,ist,isr);
modify(p*2+1,(l+r)/2+1,r,ql,qr,ist,isr);
}
} void traverse(int p,int l,int r) {
if(l==r) {
if(tag[p] && !rev[p]) a[l]=1;
else a[l]=0;
}
else {
pushdown(p);
traverse(p*2,l,(l+r)/2);
traverse(p*2+1,(l+r)/2+1,r);
}
} int main() {
n=65536*2;
char op,p,q;
while(~scanf("%c %c%d,%d%c\n",&op,&p,&t1,&t2,&q)) {
++t1, ++t2;
if(p=='(') t1=t1*2+1;
else t1=t1*2;
if(q==')') t2=t2*2-1;
else t2=t2*2;
if(t1>t2) continue;
if(op=='U') modify(1,1,n,t1,t2,1,0);
if(op=='I') modify(1,1,n,2,t1-1,1,1), modify(1,1,n,t2+1,n,1,1);
if(op=='D') modify(1,1,n,t1,t2,1,1);
if(op=='C') modify(1,1,n,2,n,0,1), modify(1,1,n,2,t1-1,1,1), modify(1,1,n,t2+1,n,1,1);
if(op=='S') modify(1,1,n,t1,t2,0,1);
}
traverse(1,1,n);
int last=0,flag=0;
for(int i=1;i<=n+1;i++) { // Error n->n+1
if(last==0 && a[i]==1) last=i;
if(last && a[i]==0) {
int l=last, r=i-1;
flag=1;
if(l&1) printf("(%d,",l/2-1);
else printf("[%d,",l/2-1);
if(r&1) printf("%d) ",(r-1)/2);
else printf("%d] ",(r-1)/2);
last=0;
}
}
if(flag==0) cout<<"empty set";
}

[SDOI2008] 校门外的区间 - 线段树的更多相关文章

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

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

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

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

  3. BZOJ-3226 校门外的区间 线段数+拆点(类似的思想)

    shabi题....bzoj关键字检查freopen??可怕,,1A的卡了一小时.... 3226: [Sdoi2008]校门外的区间 Time Limit: 10 Sec Memory Limit: ...

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 如何在IDEA的maven项目中连接并使用MySQL8.0

    首先看一下我的基本的开发环境: 操作系统:MacOS 10.13.5 编辑器:IDEA 2018.3 其他:MySQL8.0.15.Maven 3.3.9.JDK 1.8 好,下面就正式开始: 第一步 ...

  2. centos yum 安装jdk1.7

    安装: yum -y install java-1.7.0-openjdk-devel.x86_64 环境变量: vi /etc/profile export JAVA_HOME=/usr/lib/j ...

  3. C#设计模式学习笔记:(4)建造者模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7614630.html,记录一下学习过程以备后续查用. 一.引言 在现实生活中,我们经常会遇到一些构成比较复杂 ...

  4. python 复习 day1

    import timeimport json # 二:嵌套取值操作students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]] ...

  5. pyqt5加载pdf文档失败

    import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog from PyPDF2 import Pdf ...

  6. Android一个简单的自定义对话框制作

    布局文件 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android= ...

  7. Beego 过滤器

    过滤器 beego 支持自定义过滤中间件,例如安全验证,强制跳转等. 过滤器函数如下所示: beego.InsertFilter(pattern string, position int, filte ...

  8. 吴裕雄--天生自然HADOOP操作实验学习笔记:分布式及RPC通信简介

    实验目的 掌握GOF设计模式的代理模式 了解掌握socket编程.java反射.动态代理 了解NIO.多线程 掌握hadoop的RPC框架使用API 实验原理 1.什么是RPC 在hadoop出现以前 ...

  9. 【终端使用】echo、">"覆盖、">>"追加、"|"管道

    1."echo"文字内容 "echo"命令,会在终端中显示参数指定的文字,通常会和 重定向 联合使用. 2.重定向 ">"和" ...

  10. jQuery - lable 取值、赋值

    取值 var val = $("#breakfastMonday").html(); 赋值 $("#breakfastMonday").html("v ...