题目大意: 有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 : xÎA or xÎB} A∩B {x : xÎA and xÎB} A-B {x : xÎA and xÏB} A⊕B (A-B)∪(B-A) 思路: 每个数之间加入一个数,就像这样2 2.5 3 3.5 4 [2,3) -> [2,2.5] (3,4] -> [3.5,4] 用01表示集合,则U…
感觉很有趣的题呢. 每个点拆成两个,线段树维护. 不过这题难点其实在输入输出. #include<bits/stdc++.h> #define N (1<<17) #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 in…
3226: [Sdoi2008]校门外的区间 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 615 Solved: 227[Submit][Status][Discuss] Description 受校门外的树这道经典问题的启发,A君根据基本的离散数学的知识,抽象出5种运算维护集合S(S初始为空)并最终输出S.现在,请你完成这道校门外的树之难度增强版——校门外的区间. 5种运算如下: U T S∪T I T S∩T D T S-T C…
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3226 题意:初始集合S为空.模拟四种集合操作:集合并.交.差.补集并. 思路:区间有开区间闭区间,首先区间左右都乘以2,这样闭区间在偶数位置,开区间在奇数位置.然后就是区间染色颜色反转两个操作.注意区间染色时,若有反转标记则清除:反转时若有染色标记则直接将染色反转即可. const int N=70005; struct node { int L,R; int re,color;…
链接 思路 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开始的.. 读入的区间并不都是一位数..…
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 namespa…