【题解】

  线段树维护区间中1的个数就好了。每次修改就打上标记并把区间的sum改为len-sum.

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cstring>
  4. #define LL long long
  5. #define N 200010
  6. #define rg register
  7. #define ls (u<<1)
  8. #define rs (u<<1|1)
  9. #define mid ((a[u].l+a[u].r)>>1)
  10. #define len(x) (a[x].r-a[x].l+1)
  11. using namespace std;
  12. int n,m;
  13. struct tree{
  14. int l,r,sum; bool mark;
  15. }a[N<<];
  16. inline int read(){
  17. int k=,f=; char c=getchar();
  18. while(c<''||c>'')c=='-'&&(f=-),c=getchar();
  19. while(''<=c&&c<='')k=k*+c-'',c=getchar();
  20. return k*f;
  21. }
  22. void build(int u,int l,int r){
  23. a[u].l=l; a[u].r=r;
  24. if(l<r)
  25. build(ls,l,mid),build(rs,mid+,r),a[u].sum=a[ls].sum+a[rs].sum;
  26. else{
  27. char c=getchar();
  28. while(c!=''&&c!='') c=getchar();
  29. a[u].sum=c-'';
  30. }
  31. }
  32. inline void pushdown(int u){
  33. if(!a[u].mark) return; else a[u].mark^=;
  34. a[ls].mark^=; a[ls].sum=len(ls)-a[ls].sum;
  35. a[rs].mark^=; a[rs].sum=len(rs)-a[rs].sum;
  36. }
  37. void update(int u,int r,int l){
  38. if(l<=a[u].l&&a[u].r<=r){
  39. a[u].sum=len(u)-a[u].sum;
  40. a[u].mark^=;
  41. return;
  42. }
  43. pushdown(u);
  44. if(l<=mid) update(ls,r,l);
  45. if(r>mid) update(rs,r,l);
  46. a[u].sum=a[ls].sum+a[rs].sum;
  47. }
  48. int query(int u,int r,int l){
  49. if(l<=a[u].l&&a[u].r<=r) return a[u].sum;
  50. pushdown(u); int ret=;
  51. if(l<=mid) ret+=query(ls,r,l);
  52. if(r>mid) ret+=query(rs,r,l);
  53. return ret;
  54. }
  55. int main(){
  56. n=read(); m=read(); build(,,n);
  57. while(m--){
  58. if(read()==) printf("%d\n",query(,read(),read()));
  59. else update(,read(),read());
  60. }
  61. return ;
  62. }

洛谷 2574 XOR的艺术的更多相关文章

  1. 洛谷 P2574 XOR的艺术(线段树 区间异或 区间求和)

    To 洛谷.2574 XOR的艺术 题目描述 AKN觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个伤害串为长度为n的 ...

  2. 洛谷P2574 XOR的艺术

    题目描述 \(AKN\)觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个伤害串为长度为\(n\)的\(01\)串. 2 ...

  3. 洛谷——P2574 XOR的艺术

    P2574 XOR的艺术 很久之前就想挑战一下这道题了,线段树下传标记的入门题,跟区间加法下传标记类似. #include<bits/stdc++.h> #define N 1000005 ...

  4. 洛谷 P2574 XOR的艺术

    刚刚学了,线段树,一道线段树入门题试试水 下面是题面 题目描述 AKN觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个 ...

  5. 洛谷P2574 XOR的艺术(线段树)——Chemist

    当线段树遇上无敌位运算! 还是老套路,线段树维护区间和,一个区间有几个"1"就是这个区间的区间和,同时支持区间修改区间查询,只不过操作从加法变成了异或.主要难点就在更新懒标记那里, ...

  6. 【洛谷】【线段树+位运算】P2574 XOR的艺术

    [题目描述:] AKN觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个伤害串为长度为n的01串. 2. 给定一个范围[ ...

  7. 【洛谷P2574】XOR的艺术

    XOR的艺术 题目链接 用线段树维护sum, 修改时 tag[p]^=1; sum=r-l+1-sum; 详见代码 #include<iostream> #include<cstdi ...

  8. 洛谷 P4151 BZOJ 2115 [WC2011]最大XOR和路径

    //bzoj上的题面太丑了,导致VJ的题面也很丑,于是这题用洛谷的题面 题面描述 XOR(异或)是一种二元逻辑运算,其运算结果当且仅当两个输入的布尔值不相等时才为真,否则为假. XOR 运算的真值表如 ...

  9. [bzoj3668][Noi2014]起床困难综合症/[洛谷3613]睡觉困难综合症

    来自FallDream的博客,未经允许,请勿转载,谢谢. 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综 ...

随机推荐

  1. bzoj3262 陌上花开——CDQ分治

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3262 第一道CDQ分治题! 看博客:https://www.cnblogs.com/Narh ...

  2. bzoj1791

    1791: [Ioi2008]Island 岛屿 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1680  Solved: 369[Submit][S ...

  3. C# 判断两个矩形是否相交

    源代码 public bool JudgeRectangleIntersect(double RecAleftX, double RecAleftY, double RecArightX, doubl ...

  4. IDEA中项目src目录下无法创建java文件的问题

    出现的问题如下,是因为该目录不是源码目录 解决办法 设置成功

  5. 开车旅行 2012年NOIP全国联赛提高组(倍增+set)

    开车旅行 2012年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 小A 和小B决定利用 ...

  6. [Swift通天遁地]一、超级工具-(17)自定义的CVCalendar日历

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. Parameterized testing with any Python test framework

    1. 在进行单元测试时,很多时候需要进行参数化 尝试过使用 from nose_parameterized import parameterized 但在使用过程中会报错,后来将上面的内容改为了下面的 ...

  8. 全面学习ORACLE Scheduler特性(10)管理Chains

    5.2  管理Chains 5.2.1  修改Chains属性 基本上碰到修改CHAIN属性的机率不会太大,因此确实没啥可修改的,对于CHAIN对象来说,能够修改的属性只有两个:evaluation_ ...

  9. 纵横填字map版(初始数据结构)

    新数据结构设计: 定义一个map: key是横纵坐标字符串,比如“0,4” value是一个json,包含以下属性:字,横向的词(若 有的话,无的话,空串),纵向的词(若有的话,无的话,空串). 另有 ...

  10. IKanalyzer、ansj_seg、jcseg三种中文分词器的实战较量

    转自:http://lies-joker.iteye.com/blog/2173086 选手:IKanalyzer.ansj_seg.jcseg 硬件:i5-3470 3.2GHz 8GB win7 ...