poj2155:http://poj.org/problem?id=2155

题意;同上一遍随笔。

题解:这里用二维线段树打了一发。第一次学习别人的代码。才学的。这种树套树的程序,确实很费脑子,一不小心就会晕了,而且这次是用省空间的方法写的。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. bool seg[][];
  7. int n,ans;
  8. void updatey(int i,int l,int r,int j,int y1,int y2){
  9. if(l==y1&&r==y2){
  10. seg[i][j]^=;
  11. return;
  12. }
  13. int mid=(l+r)/;
  14. if(mid>=y2)updatey(i,l,mid,j*,y1,y2);
  15. else if(mid<y1)updatey(i,mid+,r,j*+,y1,y2);
  16. else {
  17. updatey(i,l,mid,j*,y1,mid);//注意这里不要写成updatey(i,l,mid,j*2,y1,(y1+y2)/2)
  18. updatey(i,mid+,r,j*+,mid+,y2);
  19. }
  20. }
  21. void updatex(int i,int l,int r,int x1,int x2,int y1,int y2){
  22. if(l==x1&&r==x2){
  23. updatey(i,,n,,y1,y2);
  24. return;
  25. }
  26. int mid=(l+r)/;
  27. if(mid>=x2)updatex(i*,l,mid,x1,x2,y1,y2);
  28. else if(mid<x1)updatex(i*+,mid+,r,x1,x2,y1,y2);
  29. else {
  30. updatex(i*,l,mid,x1,mid,y1,y2);
  31. updatex(i*+,mid+,r,mid+,x2,y1,y2);
  32. }
  33. }
  34. void queryY(int i,int l,int r,int j,int y ){
  35. ans^=seg[i][j];
  36. if(l==r)return;
  37. int mid=(l+r)/;
  38. if(mid>=y)queryY(i,l,mid,j*,y);
  39. else
  40. queryY(i,mid+,r,j*+,y);
  41.  
  42. }
  43. void queryX(int i,int l,int r,int x,int y){
  44. queryY(i,,n,,y);
  45. if(l==r)return;
  46. int mid=(l+r)/;
  47. if(mid>=x)queryX(i*,l,mid,x,y);
  48. else
  49. queryX(i*+,mid+,r,x,y);
  50.  
  51. }
  52. int t,x1,y1,x2,y2,cas;
  53. char temp[];
  54. int main(){
  55. scanf("%d",&cas);
  56. int tt=;
  57. while(cas--){
  58. memset(seg,,sizeof(seg));
  59. scanf("%d%d",&n,&t);
  60. if(tt>)printf("\n");
  61. tt=;
  62. for(int i=;i<=t;i++){
  63. scanf("%s%d%d",temp,&x1,&y1);
  64. if(temp[]=='C'){
  65. scanf("%d%d",&x2,&y2);
  66. updatex(,,n,x1,x2,y1,y2);
  67. }
  68. else{
  69. ans=;
  70. queryX(,,n,x1,y1);
  71. printf("%d\n",ans);
  72. }
  73.  
  74. }
  75. }
  76. }

Matrix(线段树版)的更多相关文章

  1. BZOJ2028:[SHOI2009]会场预约(线段树版)

    浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...

  2. Fountains(非线段树版(主要是不太会用))

    Arkady plays Gardenscapes a lot. Arkady wants to build two new fountains. There are n available foun ...

  3. Luogu P3740 [HAOI2014]贴海报_线段树

    线段树版的海报 实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊 本来以为要离散的,结果没打就A了 #include<iostream> #include<cstd ...

  4. Gym 101911E "Painting the Fence"(线段树区间更新+双端队列)

    传送门 题意: 庭院中有 n 个围栏,每个围栏上都被涂上了不同的颜色(数字表示): 有 m 条指令,每条指令给出一个整数 x ,你要做的就是将区间[ x第一次出现的位置 , x最后出现的位置 ]中的围 ...

  5. HDU 6318.Swaps and Inversions-求逆序对-线段树 or 归并排序 or 离散化+树状数组 (2018 Multi-University Training Contest 2 1010)

    6318.Swaps and Inversions 这个题就是找逆序对,然后逆序对数*min(x,y)就可以了. 官方题解:注意到逆序对=交换相邻需要交换的次数,那么输出 逆序对个数 即可. 求逆序对 ...

  6. UVALive - 5031 Graph and Queries (并查集+平衡树/线段树)

    给定一个图,支持三种操作: 1.删除一条边 2.查询与x结点相连的第k大的结点 3.修改x结点的权值 解法:离线倒序操作,平衡树or线段树维护连通块中的所有结点信息,加个合并操作就行了. 感觉线段树要 ...

  7. HDU-1556-Color the ball (线段树和差分数组两种解法)

    N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一 ...

  8. Luogu P3740 [HAOI2014] 贴海报 线段树

    线段树版的海报 实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊 本来以为要离散的,结果没打就A了 #include<iostream> #include<cstd ...

  9. B. Interesting Array(线段树)

    B. Interesting Array time limit per test 1 second memory limit per test 256 megabytes input standard ...

随机推荐

  1. Linux下报 java.net.SocketException权限不够 异常解决

    转载自:http://wangchongan.com/articles/java-net-socket-exception-permission-denied.html 今天在Linux下用Jetty ...

  2. mybatis 多参数处理

    接口交互比较多, 所以 入参比较多,  有五个参数,是排序 参数, 跟这个五个参数排序,本来想写个对象的, 怕麻烦, 就把 五个参数 变成一个参数, 升序 1 ,降序2 ,比如  11221 ,第三第 ...

  3. SQL Server 2008中增强的"汇总"技巧

    本文转载:http://www.cnblogs.com/downmoon/archive/2012/04/06/2433988.html SQL Server 2008中的Pivot和UnPivot: ...

  4. Struts2自己定义拦截器实例—登陆权限验证

    版本号:struts2.1.6 此实例实现功能:用户须要指定username登陆,登陆成功进入对应页面运行操作,否则返回到登陆页面进行登陆,当直接訪问操作页面(登陆后才干訪问的页面)时则不同意,须返回 ...

  5. GPS定位

    User Location(用户定位): 1.User Location能做什么? 获取用户位置.追踪用户的移动: 2.User Location关键API? Location Manager:用于管 ...

  6. [javascirpt] Regex

    To Currency function toCurrency(price){ return price.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, & ...

  7. Android(java)学习笔记219:开发一个多界面的应用程序之两种意图

    1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...

  8. sublime 3 3083验证码

    Sublime Text 3注册码两枚: ----- BEGIN LICENSE ----- K- Single User License EA7E- 3A099EC1 C0B5C7C5 33EBF0 ...

  9. 初定为EGame

    [Q]在纠结到底要用什么方式写博客,是原生态记录框架编写过程(有点所谓的手把手教学的感觉有木有),还是每个模块整合完毕后写分析文章,新手没有写过博客,不知道那种效果好.朋友们给点建议? 这套框架的初衷 ...

  10. 关于uploadify 没有显示进度条!!!!

    如果你也弄了很久不知道为什么不出现上传进度条!,那就一定要看这里了! 我注释了 queueID 属性后 就出现了!!!!! 就是这么简答! //添加界面的附件管理 $('#file_upload'). ...