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. Java连载89-SorteSet、Comparable接口

    一. SortedSet集合直接举例 package com.bjpowernode.java_learning; import java.util.*; /** * java.util.Set * ...

  2. Shiro -- (一)简介

    简介: Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证.授权.加密和会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务.并且相对于其他安全框架, ...

  3. Java基础之六、Java编程思想(8-10)

    八.多态 多态(也称作动态绑定.后期绑定或运行时绑定) 域(成员变量)是不具有多态性的,只有普通的方法调用是多态的,任何域访问操作都将由编译器解析,因此不是多态的 静态方法也是不具有多态性的 publ ...

  4. java工作流系统jflow表单引擎字段扩展组件介绍

    关键词:工作流快速开发平台  工作流流设计  业务流程管理   asp.net 开源工作流  bpm工作流系统  java工作流主流框架  自定义工作流引擎 表单设计器  流程设计器 装饰类图片 用于 ...

  5. Java基础之四、字符和字符串 异常处理

    字符和字符串是最常用的信息 1:char表示字符 字符常量-两个单引号中间的字符表示字符常量'A' 2:字符串和String 字符串常量-双引号中间的字符序列"Java" 字符串常 ...

  6. 到2029年MRAM收入将增长170倍

    一份新市场报告预计,从2018年到2029年,独立MRAM和STT-MRAM的收入将增长170倍,达到近40亿美元的收入.下一代内存技术的增长将主要由取代效率较低的内存技术(例如NOR闪存和SRAM) ...

  7. 吴裕雄--天生自然 R语言数据可视化绘图(4)

    par(ask=TRUE) # Basic scatterplot library(ggplot2) ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_poin ...

  8. [CF1311C] Perform the Combo

    Solution 前缀和搞一下即可 #include <bits/stdc++.h> using namespace std; #define int long long const in ...

  9. kettle文本文件写入数据库,简单进行数据清洗

    使用kettle7.0,java8.0,Navicat,实验数据使用全国肺炎2月24日的数据 1.建立关系 2.创建连接 如果是第一次连接,可能会出现连接不上的情况,这时候可能情况是没有将Mysql的 ...

  10. 关于vector的描述

    对于有些编译器而言,使用vector<vector<int>> vec;并不能通过,必须采用vector<vector<int> >vec才可以通过.两 ...