感觉很有趣的题呢。

每个点拆成两个,线段树维护。

不过这题难点其实在输入输出。

  1. #include<bits/stdc++.h>
  2. #define N (65535<<1)
  3. #define M (l+r>>1)
  4. #define P (k<<1)
  5. #define S (k<<1|1)
  6. #define K l,r,k
  7. #define L l,M,P
  8. #define R M+1,r,S
  9. #define Z \
  10. int l=0,int r=N,int k=1
  11. int u[1<<18],v[1<<18],a[N+10];
  12. template<int d>
  13. void same(int k){
  14. u[k]=d;
  15. v[k]=0;
  16. }
  17. void flip(int k){
  18. (~u[k]?u[k]:v[k])^=1;
  19. }
  20. void (*operate[3])(int)
  21. ={same<0>,same<1>,flip};
  22. void devolve(int k){
  23. int d=v[k]?2:u[k];
  24. if(~d){
  25. operate[d](P);
  26. operate[d](S);
  27. v[k]=0;
  28. u[k]=-1;
  29. }
  30. }
  31. void A(int d,int s,int t,Z){
  32. if(s==l&&t==r)
  33. operate[d](k);
  34. else{
  35. devolve(k);
  36. if(t<=M)
  37. A(d,s,t,L);
  38. else if(s>M)
  39. A(d,s,t,R);
  40. else{
  41. A(d,s,M,L);
  42. A(d,M+1,t,R);
  43. }
  44. }
  45. }
  46. void finish(Z){
  47. if(~u[k])
  48. for(int i=l;i<=r;++i)
  49. a[i]=u[k];
  50. else{
  51. devolve(k);
  52. finish(L);
  53. finish(R);
  54. }
  55. }
  56. bool empty(){
  57. for(int i=0;i<=N;++i)
  58. if(a[i])
  59. return 0;
  60. return 1;
  61. }
  62. int main(){
  63. memset(u,-1,sizeof u);
  64. char d[2],b[16];
  65. while(~scanf("%s%s",d,b)){
  66. char u,v;
  67. int s,t;
  68. sscanf(b,"%c%d,%d%c",&u,&s,&t,&v);
  69. s=s*2+(u=='(');
  70. t=t*2-(v==')');
  71. if(s>t)
  72. continue;
  73. switch(*d){
  74. case'D':
  75. A(0,s,t);
  76. break;
  77. case'U':
  78. A(1,s,t);
  79. break;
  80. case'S':
  81. A(2,s,t);
  82. break;
  83. default:
  84. if(s)
  85. A(0,0,s-1);
  86. if(t!=N)
  87. A(0,t+1,N);
  88. if(*d=='C')
  89. A(2,s,t);
  90. }
  91. }
  92. finish();
  93. if(empty())
  94. puts("empty set");
  95. else
  96. for(int i=0;i<=N;++i){
  97. if((!i||!a[i-1])&&a[i])
  98. printf("%c%d,",i&1?'(':'[',i>>1);
  99. if(a[i]&&!a[i+1])
  100. printf("%d%c ",i+1>>1,i&1?')':']');
  101. }
  102. }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. [BZOJ1299]巧克力棒(博弈论)

    题目:http://hzwer.com/1976.html 分析:先Orz hzwer 对于盒子外面的巧克力棒,就是Nim游戏. 所以就很容易想到先手第一步最好从盒子中取出m根巧克力棒,使得这些巧克力 ...

  2. 关于图像文章垂直无缝连接滚动——JS实现

    <!-- 作者:chenyehuacecil@163.com 时间:2015-02-04 描述:实现整篇文章从下到上的无缝连接滚动--><html xmlns="http: ...

  3. 页面切换语言包使用session不用cookie

    cookie的问题,ifame中的cookie不一致 在父页面设置的语言包cookie,在iframe中获取不到.为什么呢? 为什么语言包这个事跟cookie过不去,有什么特殊的? iframe的sr ...

  4. 网站移植到linux上后常犯的错误

    常犯的错误 1:gcc库没装或者没装全 表现:没有可用的C编译器 同类错误:提示g++ not found, 解决:出现以上错误,则是因为gcc编译器没装,或者是没装全. 挂载光盘,到Pakeges里 ...

  5. applicationContext.xml和dispatcher-servlet.xml的区别

    在SpringMVC项目中我们一般会引入applicationContext.xml和dispatcher-servlet.xml两个配置文件,这两个配置文件具体的区别是什么呢? Spring 官方文 ...

  6. 高手详解SQL性能优化十条经验

    1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 解决办法: 其实只需要对该脚本略做改进,查询速度便会 ...

  7. IntelliJ_编译一直报错“找不到符号”

    执行maven compile时一直报错"找不到符号",类 XXX 各种clean.compile都不行 最后执行Rebuild Project一次后解决   执行rebuild ...

  8. javascript 数组实例

    在遍历数组时, 如果想要排除 null / undefined 和 不存在的元素时,代码如下: for ( var i = 0; i < a.length; i++ ){ //跳过null / ...

  9. 通过javascript在网页端解压zip文件并查看压缩包内容

    WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说:     如果前端的代 ...

  10. bbs树形打印(一)

    前言:大家在bbs回帖时常常可以看到树形的回复形式. dfs设计 (1) 为使得Connection仅打开一次,因此以conn作为其中一个递归参数,在递归全程不关闭conn; (2)根据存入数据的树状 ...