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. python range函数(42)

    在python中使用最多的除了print函数 就是 for循环 了,那么这里就不得不介绍一下python内置函数range函数! 一.range函数简介 python range函数可创建一个整数列表 ...

  2. Windwos应急响应和系统加固(1)——Windwos操作系统版本介绍

    Windwos操作系统版本介绍 1. Micorsoft  Windows XP  ·Microsoft官方发布时间以及终止提供服务时间:2001.10.25-2014.4.8   产生漏洞:MS08 ...

  3. Oracle的overlaps函数转换其他数据库语法

    首先,来介绍一下Oracle的overlaps函数的用法: overlaps函数是用来判断两个时间段是否有重叠的 比如说计算 (a,b),(c,d) 就可以写成: select * from dual ...

  4. JS 重载父页面

    <script language=javascript> window.onload=function(){ //刷新父页面 window.opener.location.reload() ...

  5. 离散对数及其拓展 大步小步算法 BSGS

    离散对数及其拓展 离散对数是在群Zp∗Z_{p}^{*}Zp∗​而言的,其中ppp是素数.即在在群Zp∗Z_{p}^{*}Zp∗​内,aaa是生成元,求关于xxx的方程ax=ba^x=bax=b的解, ...

  6. 哈尔滨工业大学(深圳)本科毕业设计(论文)LaTeX模板:hitszthesis

    目录 本篇文章的主要内容如下: 目录 引言 Why hitszthesis? 下载方式 编译方式简介 模板说明文档(用户手册) 毕业论文撰写样例 后记 引言 去年发布过哈深本科毕业设计(论文)的LaT ...

  7. java多线程技能-使用多线程-继承Thread类

    /* 使用多线程可通过继承Thread类或实现Runnable接口. Thread和Runnable的关系:public class Thread implements Runnable. 使用thr ...

  8. P1980 计数问题(int,string,stringstream)

    题目描述 试计算在区间 1 到 n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1 到 11 中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 ...

  9. PTA 1005 Spell It Right

    题目描述: Given a non-negative integer N, your task is to compute the sum of all the digits of N, and ou ...

  10. 【Pyecharts可视化分享】杭州步行热门路线等~

    前言 本文包括内容如下: 杭州步行热门路线 渐变效果散点图 均是Echarts官方提供等示例,本文将会通过Pyecharts来进行实现. 杭州步行热门路线 因为代码中需要调用百度地图,所以开始之前你需 ...