红色的幻想乡

思路:

  线段树+容斥原理;

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define maxn 100005
  4. #define maxm maxn<<2
  5. #define ll long long
  6. class TreeType {
  7. private:
  8. int L[maxm],R[maxm],mid[maxm],dis[maxm];
  9. public:
  10. void build(int now,int l,int r)
  11. {
  12. L[now]=l,R[now]=r,dis[now]=;
  13. if(l==r) return;mid[now]=l+r>>;
  14. build(now<<,l,mid[now]),build(now<<|,mid[now]+,r);
  15. }
  16. void updata(int now,int to)
  17. {
  18. if(L[now]==R[now])
  19. {
  20. dis[now]^=;
  21. return;
  22. }
  23. if(to<=mid[now]) updata(now<<,to);
  24. else updata(now<<|,to);
  25. dis[now]=dis[now<<]+dis[now<<|];
  26. }
  27. int query(int now,int l,int r)
  28. {
  29. if(L[now]>=l&&R[now]<=r) return dis[now];
  30. int res=;
  31. if(l<=mid[now]) res+=query(now<<,l,r);
  32. if(r>mid[now]) res+=query(now<<|,l,r);
  33. return res;
  34. }
  35. };
  36. struct TreeType tree1,tree2;
  37. int n,m,q;
  38. inline void in(int &now)
  39. {
  40. char Cget=getchar();now=;
  41. while(Cget>''||Cget<'') Cget=getchar();
  42. while(Cget>=''&&Cget<='')
  43. {
  44. now=now*+Cget-'';
  45. Cget=getchar();
  46. }
  47. }
  48. int main()
  49. {
  50. in(n),in(m),in(q);
  51. tree1.build(,,n);
  52. tree2.build(,,m);
  53. int op,x1,y1,x2,y2;
  54. while(q--)
  55. {
  56. in(op),in(x1),in(y1);
  57. if(op==) tree1.updata(,x1),tree2.updata(,y1);
  58. else
  59. {
  60. in(x2),in(y2);
  61. ll ans1=tree1.query(,x1,x2),ans2=tree2.query(,y1,y2);
  62. printf("%lld\n",ans1*(y2-y1+)+ans2*(x2-x1+)-ans1*ans2*);
  63. }
  64. }
  65. return ;
  66. }

AC日记——红色的幻想乡 洛谷 P3801的更多相关文章

  1. AC日记——校门外的树 洛谷 P1047

    题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种 ...

  2. AC日记——无线网络发射器选址 洛谷 P2038

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...

  3. AC日记——小A的糖果 洛谷七月月赛

    小A的糖果 思路: for循环贪心: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 #defi ...

  4. AC日记——矩阵取数游戏 洛谷 P1005

    矩阵取数游戏 思路: dp+高精: 代码: #include <bits/stdc++.h> using namespace std; #define ll long long struc ...

  5. AC日记——妖梦拼木棒 洛谷 P3799

    妖梦拼木棒 思路: 神特么题: 代码: #include <bits/stdc++.h> using namespace std; #define mod 1000000007LL int ...

  6. AC日记——妖梦斩木棒 洛谷 P3797

    妖梦斩木棒 思路: 略坑爹: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 200005 #define m ...

  7. AC日记——[SDOI2009]HH去散步 洛谷 P2151

    [SDOI2009]HH去散步 思路: 矩阵快速幂递推(类似弗洛伊德): 给大佬跪烂-- 代码: #include <bits/stdc++.h> using namespace std; ...

  8. AC日记——聪明的质监员 洛谷 P1314

    聪明的质监员 思路: 二分: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 200005 #define l ...

  9. AC日记——大爷的字符串题 洛谷 P3709

    大爷的字符串题 思路: 莫队,需开O2,不开50: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 20000 ...

随机推荐

  1. 图片上传(方法一:jquery.upload.js)

    一.在JSP页面引入jquery.upload.js 文件: <script type="text/javascript" src="${ctx}/script/j ...

  2. 微服务学习一:idea中springboot集成mybatis

    一直都想学习微服务,这段时间在琢磨这块的内容,个人之前使用eclipse,现在用intellij idea来进行微服务的开发,个人感觉intellij idea比eclipse更简洁更方便,因为int ...

  3. rename 批量重命名

    使用背景,对规则文件名批量重命名 例如: Send_Message_20160802_01_log.log Send_Message_20160802_02_log.log Send_Message_ ...

  4. Windows下端口占用查看

    假如我们需要确定谁占用了我们的80端口 1.Windows平台在windows命令行窗口下执行:C:\>netstat -aon|findstr "80" TCP     1 ...

  5. bzoj 1705: [Usaco2007 Nov]Telephone Wire 架设电话线——dp

    Description 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的N(2 <= ...

  6. 【BZOJ】1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

    [算法]模拟 #include<cstdio> #include<algorithm> using namespace std; ,maxm=; int a[maxn],A[m ...

  7. 【BZOJ】1666 [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏

    [算法]贪心&&堆 [题解]反过来看就是合并任意两块木板,花费为木板长度之和. 显然从最小的两块开始合并即可,用堆(优先队列)维护. 经典DP问题石子归并是只能合并相邻两堆石子,所以不 ...

  8. webpack_配置和使用教程

    webpack是一个模块打包的工具,它的作用是把互相依赖的模块处理成静态资源. webpack 可以使用 loader 来预处理文件.这允许你打包除 JavaScript 之外的任何静态资源.你可以使 ...

  9. python模块中requests参数stream

    PS:这个参数真没用过 当下载大的文件的时候,建议使用strea模式. 默认情况下是false,他会立即开始下载文件并存放到内存当中,倘若文件过大就会导致内存不足的情况. 当把get函数的stream ...

  10. linux中断系统那些事之----中断处理过程【转】

    转自:http://blog.csdn.net/xiaojsj111/article/details/14129661 以外部中断irq为例来说明,当外部硬件产生中断时,linux的处理过程.首先先说 ...