Matrix(线段树版)
poj2155:http://poj.org/problem?id=2155
题意;同上一遍随笔。
题解:这里用二维线段树打了一发。第一次学习别人的代码。才学的。这种树套树的程序,确实很费脑子,一不小心就会晕了,而且这次是用省空间的方法写的。
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- bool seg[][];
- int n,ans;
- void updatey(int i,int l,int r,int j,int y1,int y2){
- if(l==y1&&r==y2){
- seg[i][j]^=;
- return;
- }
- int mid=(l+r)/;
- if(mid>=y2)updatey(i,l,mid,j*,y1,y2);
- else if(mid<y1)updatey(i,mid+,r,j*+,y1,y2);
- else {
- updatey(i,l,mid,j*,y1,mid);//注意这里不要写成updatey(i,l,mid,j*2,y1,(y1+y2)/2)
- updatey(i,mid+,r,j*+,mid+,y2);
- }
- }
- void updatex(int i,int l,int r,int x1,int x2,int y1,int y2){
- if(l==x1&&r==x2){
- updatey(i,,n,,y1,y2);
- return;
- }
- int mid=(l+r)/;
- if(mid>=x2)updatex(i*,l,mid,x1,x2,y1,y2);
- else if(mid<x1)updatex(i*+,mid+,r,x1,x2,y1,y2);
- else {
- updatex(i*,l,mid,x1,mid,y1,y2);
- updatex(i*+,mid+,r,mid+,x2,y1,y2);
- }
- }
- void queryY(int i,int l,int r,int j,int y ){
- ans^=seg[i][j];
- if(l==r)return;
- int mid=(l+r)/;
- if(mid>=y)queryY(i,l,mid,j*,y);
- else
- queryY(i,mid+,r,j*+,y);
- }
- void queryX(int i,int l,int r,int x,int y){
- queryY(i,,n,,y);
- if(l==r)return;
- int mid=(l+r)/;
- if(mid>=x)queryX(i*,l,mid,x,y);
- else
- queryX(i*+,mid+,r,x,y);
- }
- int t,x1,y1,x2,y2,cas;
- char temp[];
- int main(){
- scanf("%d",&cas);
- int tt=;
- while(cas--){
- memset(seg,,sizeof(seg));
- scanf("%d%d",&n,&t);
- if(tt>)printf("\n");
- tt=;
- for(int i=;i<=t;i++){
- scanf("%s%d%d",temp,&x1,&y1);
- if(temp[]=='C'){
- scanf("%d%d",&x2,&y2);
- updatex(,,n,x1,x2,y1,y2);
- }
- else{
- ans=;
- queryX(,,n,x1,y1);
- printf("%d\n",ans);
- }
- }
- }
- }
Matrix(线段树版)的更多相关文章
- BZOJ2028:[SHOI2009]会场预约(线段树版)
浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...
- Fountains(非线段树版(主要是不太会用))
Arkady plays Gardenscapes a lot. Arkady wants to build two new fountains. There are n available foun ...
- Luogu P3740 [HAOI2014]贴海报_线段树
线段树版的海报 实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊 本来以为要离散的,结果没打就A了 #include<iostream> #include<cstd ...
- Gym 101911E "Painting the Fence"(线段树区间更新+双端队列)
传送门 题意: 庭院中有 n 个围栏,每个围栏上都被涂上了不同的颜色(数字表示): 有 m 条指令,每条指令给出一个整数 x ,你要做的就是将区间[ x第一次出现的位置 , x最后出现的位置 ]中的围 ...
- HDU 6318.Swaps and Inversions-求逆序对-线段树 or 归并排序 or 离散化+树状数组 (2018 Multi-University Training Contest 2 1010)
6318.Swaps and Inversions 这个题就是找逆序对,然后逆序对数*min(x,y)就可以了. 官方题解:注意到逆序对=交换相邻需要交换的次数,那么输出 逆序对个数 即可. 求逆序对 ...
- UVALive - 5031 Graph and Queries (并查集+平衡树/线段树)
给定一个图,支持三种操作: 1.删除一条边 2.查询与x结点相连的第k大的结点 3.修改x结点的权值 解法:离线倒序操作,平衡树or线段树维护连通块中的所有结点信息,加个合并操作就行了. 感觉线段树要 ...
- HDU-1556-Color the ball (线段树和差分数组两种解法)
N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一 ...
- Luogu P3740 [HAOI2014] 贴海报 线段树
线段树版的海报 实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊 本来以为要离散的,结果没打就A了 #include<iostream> #include<cstd ...
- B. Interesting Array(线段树)
B. Interesting Array time limit per test 1 second memory limit per test 256 megabytes input standard ...
随机推荐
- PHP实现大文件的上传设置
打开php.ini,首先找到 ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; 区域,有影响文件上传的以下几个参数: file_uploads = ...
- swiper.js 移动端触摸滑动插件
API链接: http://www.swiper.com.cn/api/start/2014/1218/140.html <body> <div class="swiper ...
- 另一个有趣的Captcha 网站
今天在一个网站注册时又发现了一个有趣的Captcha形式.给你一个翻转的图片,然后让你拽下面的slide bar让它回到正常的位置,很有趣.下面是提供这个Captcha的网站. minteye – s ...
- 通过cocos2d-x的CCGLProgram和CCShaderCache的实现来分析OpenGL ES中的Shader编程
在OpenGL ES中,Shader是着色器,包括两种:顶点着色器(Vertex Shader)和片元着色器(Fragment Shader).每个program对象有且仅有一个Vertex Shad ...
- 从零开始学习jQuery-------jQuery元素选择器(三)
下面我们来介绍一下jQuery元素选择器,在Web开发中我们最常用的操作是获取元素,然后对获取的元素进行一系列的操作,jQuery根据获取页面元素的不同,可以将jQuery选择器分为四大类:基本选择器 ...
- 线程、委托、lambda运算符的简单示例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 《Android开发艺术探索》读书笔记 (4) 第4章 View的工作原理
本节和<Android群英传>中的第3章Android控件架构与自定义控件详解有关系,建议先阅读该章的总结 第4章 View的工作原理 4.1 初始ViewRoot和DecorView ( ...
- Creating a Navigation Drawer 创建一个导航侧边栏
The navigation drawer is a panel that displays the app’s main navigation options on the left edge of ...
- php 之 post json 数据
原文链接 http://www.jb51.net/article/27312.htm 最近用到python 与PHP交互,phthon把json数据post给PHP,但在PHP里面$_post获取不到 ...
- XML 序列化与PULL解析
简介 Pull解析XML XmlPullParser解析器的运行方式与SAX解析器相似.它提供了类似的事件(开始元素和结束元素),但需要使用parser.next()方法来提取它们.事件将作为数值代码 ...