题面

初见线段树分治

(对我来说可不是什么经典题=。=)

把时间轴建出来一棵线段树,然后在对应的区间上打标记,最后把整棵树DFS一遍,到叶节点输出答案即可

(把最终答案开成全局的了调了半天

  1. #include<cstdio>
  2. #include<bitset>
  3. #include<vector>
  4. #include<cstring>
  5. #include<algorithm>
  6. using namespace std;
  7. const int N=,M=;
  8. int n,m,s,t1,t2,len,lst[N];
  9. char str[M]; bitset<M> lbt[N],rd;
  10. vector<bitset<M> > ve[*M];
  11. struct a
  12. {
  13. bitset<M> bit[M];
  14. void Set(bitset<M> bt)
  15. {
  16. for(int i=;~i;i--)
  17. if(bt[i]) bt^=bit[i];
  18. for(int i=;~i;i--)
  19. if(bt[i]&&!bit[i].any())
  20. {bit[i]=bt; break;}
  21. }
  22. void Output()
  23. {
  24. bitset<M> outp; outp.reset();
  25. for(int i=;~i;i--)
  26. if(!outp[i]&&bit[i].any())
  27. outp^=bit[i];
  28. bool b=false;
  29. for(int i=;~i;i--)
  30. if(outp[i])
  31. {
  32. b=true;
  33. for(int j=i;~j;j--)
  34. printf("%d",outp[j]?:);
  35. break;
  36. }
  37. if(!b) printf(""); puts("");
  38. }
  39. }sb;
  40. void Add(int nde,int l,int r,int ll,int rr,bitset<M> bt)
  41. {
  42. if(l>rr||r<ll)
  43. return ;
  44. else if(l>=ll&&r<=rr)
  45. ve[nde].push_back(bt);
  46. else
  47. {
  48. int mid=(l+r)/,ls=*nde,rs=*nde+;
  49. Add(ls,l,mid,ll,rr,bt),Add(rs,mid+,r,ll,rr,bt);
  50. }
  51. }
  52. void Getans(int nde,int l,int r,a sb)
  53. {
  54. int siz=ve[nde].size();
  55. for(int i=;i<siz;i++)
  56. sb.Set(ve[nde][i]);
  57. if(l==r)
  58. sb.Output();
  59. else
  60. {
  61. int mid=(l+r)/,ls=*nde,rs=*nde+;
  62. Getans(ls,l,mid,sb),Getans(rs,mid+,r,sb);
  63. }
  64. }
  65. int main()
  66. {
  67. scanf("%d%d%d",&s,&n,&m);
  68. for(int i=;i<=m;i++)
  69. {
  70. scanf("%d%d",&t1,&t2);
  71. scanf("%s",str),len=strlen(str);
  72. if(t1!=t2)
  73. {
  74. rd.reset();
  75. for(int j=;j<len;j++)
  76. rd[j]=str[len-j-]-'';
  77. if(lst[t1]) Add(,,m,lst[t1],i-,lbt[t1]);
  78. if(lst[t2]) Add(,,m,lst[t2],i-,lbt[t2]);
  79. lst[t1]=lst[t2]=i,lbt[t1]^=rd,lbt[t2]^=rd;
  80. }
  81. }
  82. for(int i=;i<=n;i++)
  83. if(lst[i]) Add(,,m,lst[i],m,lbt[i]);
  84. Getans(,,m,sb);
  85. return ;
  86. }

解题:BZOJ 4644 经典砂比题(雾的更多相关文章

  1. [BZOJ]4644: 经典傻逼题

    某天我觉得一切题目都是那么不可做,于是百度了一下"傻逼题"-- 题目大意:对于图中的任意一个点集(可以为空或者全集),所有恰好有一个端点在这个点集中的边组成的集合被称为割.一个割的 ...

  2. [POJ 1000] A+B Problem 经典水题 C++解题报告 JAVA解题报告

        A+B Problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 311263   Accepted: 1713 ...

  3. 转:sql 经典50题--可能是你见过的最全解析

    题记:从知乎上看到的一篇文章,刚好最近工作中发现遇到的题目与这个几乎一样,可能就是从这里来的吧.^_^ 里面的答案没有细看,SQL求解重在思路,很多时候同一种结果可能有多种写法,比如题中的各科成绩取前 ...

  4. 经典算法题每日演练——第十七题 Dijkstra算法

    原文:经典算法题每日演练--第十七题 Dijkstra算法 或许在生活中,经常会碰到针对某一个问题,在众多的限制条件下,如何去寻找一个最优解?可能大家想到了很多诸如“线性规划”,“动态规划” 这些经典 ...

  5. 经典算法题每日演练——第十六题 Kruskal算法

    原文:经典算法题每日演练--第十六题 Kruskal算法 这篇我们看看第二种生成树的Kruskal算法,这个算法的魅力在于我们可以打一下算法和数据结构的组合拳,很有意思的. 一:思想 若存在M={0, ...

  6. 经典算法题每日演练——第十四题 Prim算法

    原文:经典算法题每日演练--第十四题 Prim算法 图论在数据结构中是非常有趣而复杂的,作为web码农的我,在实际开发中一直没有找到它的使用场景,不像树那样的频繁使用,不过还是准备 仔细的把图论全部过 ...

  7. 经典算法题每日演练——第十一题 Bitmap算法

    原文:经典算法题每日演练--第十一题 Bitmap算法 在所有具有性能优化的数据结构中,我想大家使用最多的就是hash表,是的,在具有定位查找上具有O(1)的常量时间,多么的简洁优美, 但是在特定的场 ...

  8. 经典算法题每日演练——第八题 AC自动机

    原文:经典算法题每日演练--第八题 AC自动机 上一篇我们说了单模式匹配算法KMP,现在我们有需求了,我要检查一篇文章中是否有某些敏感词,这其实就是多模式匹配的问题. 当然你也可以用KMP算法求出,那 ...

  9. 经典算法题每日演练——第六题 协同推荐SlopeOne 算法

    原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,“商品推荐”,"猜你喜欢“,在实体店中我们有导购来为 ...

随机推荐

  1. wc命令详解

    基础命令学习目录首页 原文链接:http://www.cnblogs.com/peida/archive/2012/12/18/2822758.html Linux系统中的wc(Word Count) ...

  2. plsql 不修改tnsnames.ora文件

    PLSQL 不修改tnsname直接连数据库的方式在PLSQL的Database中直接输入192.168.1.6:1521/VP.其中192.168.1.6为数据库的IP:1521为数据库端口:VP为 ...

  3. Python20-Day07

    面向对象之继承与派生 什么是继承? 继承是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又称为基类或者超类,新建的类称为派生类或者子类 子类会‘遗传’父类的特性,从而解决代码重用问题 py ...

  4. 【quickhybrid】如何实现一个Hybrid框架

    章节目录 [quickhybrid]如何实现一个跨平台Hybrid框架 [quick hybrid]架构一个Hybrid框架 [quick hybrid]H5和Native交互原理 [quick hy ...

  5. Dailu Scrum (2015/10/27)

    在周日晚上PM已经为大家分配了部分的代码修改工作,今天晚上PM召集了被分配代码工作的3个DEV一起讨论要求修改的代码.在共同讨论的过程中确有发现以下代码的不规范之处,PM当即要求我们先要修改规范代码的 ...

  6. 作业45//Calculator::3.0

    计算器 github 我的天我到底要写什么 一,2.0及2.6的改动 做了计算部分 加入了判断输入是否合法 合法的定义是算式符合`数字+运算符+数字+运算符+数字`的格式 其中`"-&quo ...

  7. 初入React(一)

    React:是2013年Facebook在github上的一个开源js库,它将用户界面抽象为一个个组件,再由开发者将其组合成页面.它不是完整的MVC/MVVM框架,专注于提供清晰.简洁的view层解决 ...

  8. mysql EXPLAIN 参数表

    测试样式: 参数详情:

  9. [转帖]windows 2008 Server R2 /Win7启用TLS 1.2

    来自新浪博客的 一个文章 自己很早之前曾经看过 iis的加密工具 但是当时没有认识到TLS1.2协议的问题 这里 晚上学习了一下.  http://blog.sina.com.cn/s/blog_16 ...

  10. Dubbo学习(四) dubbo的特点,8种通信协议之对比

    一.dubbo的特性 (1) 连通性: 注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小 监控中心负责统计各服务调用次数,调用 ...