POJ poj 2155 Matrix
题目链接【http://poj.org/problem?id=2155】
/*
poj 2155 Matrix
题意:矩阵加减,单点求和
二维线段树,矩阵加减,单点求和。
*/
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = ;
int N, Q;
struct Nodey
{
int l, r;
int val;
};
int locx[MAXN], locy[MAXN];
struct Nodex
{
int l, r;
Nodey sty[MAXN * ];
void build(int i, int _l, int _r)
{
sty[i].l = _l;
sty[i].r = _r;
sty[i].val = ;
if(_l == _r)
{
locy[_l] = i;
return;
}
int mid = (_l + _r) >> ;
build(i << , _l, mid);
build((i << ) | , mid + , _r);
}
void add(int i, int _l, int _r, int val)
{
if(sty[i].l == _l && sty[i].r == _r)
{
sty[i].val += val;
return;
}
int mid = (sty[i].l + sty[i].r) >> ;
if(_r <= mid)
add(i << , _l, _r, val);
else if(_l > mid)
add((i << ) | , _l, _r, val);
else
{
add(i << , _l, mid, val);
add((i << ) | , mid + , _r, val);
}
}
} stx[MAXN * ];
void build(int i, int l, int r)
{
stx[i].l = l;
stx[i].r = r;
stx[i].build(, , N);
if(l == r)
{
locx[l] = i;
return;
}
int mid = (l + r) >> ;
build(i << , l, mid);
build((i << ) | , mid + , r);
}
void add(int i, int x1, int x2, int y1, int y2, int val)
{
if(stx[i].l == x1 && stx[i].r == x2)
{
stx[i].add(, y1, y2, val);
return;
}
int mid = (stx[i].l + stx[i].r) / ;
if(x2 <= mid)
add(i << , x1, x2, y1, y2, val);
else if(x1 > mid)
add((i << ) | , x1, x2, y1, y2, val);
else
{
add(i << , x1, mid, y1, y2, val);
add((i << ) | , mid + , x2, y1, y2, val);
}
}
int sum(int x, int y)
{
int ret = ;
for(int i = locx[x]; i; i >>= )
for(int j = locy[y]; j; j >>= )
ret += stx[i].sty[j].val;
return ret;
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
scanf("%d%d", &N, &Q);
build(, , N);
char op[];
int x1, x2, y1, y2;
while(Q--)
{
scanf("%s", op);
if(op[] == 'C')
{
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
//(x1,y1)左上角,右下角
add(, x1, x2, y1, y2, );
}
else
{
scanf("%d%d", &x1, &y1);
if(sum(x1, y1) % == )
printf("0\n");
else
printf("1\n");
}
}
if(T)
printf("\n");
}
return ;
}
POJ poj 2155 Matrix的更多相关文章
- 【POJ】2155 Matrix
二维树状数组. /* poj2155 */ #include <iostream> #include <string> #include <map> #includ ...
- POJ 2155 Matrix (D区段树)
http://poj.org/problem?id=2155 Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 1 ...
- POJ 2155 Matrix【二维树状数组+YY(区间计数)】
题目链接:http://poj.org/problem?id=2155 Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissio ...
- POJ 2155 Matrix
二维树状数组.... Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissio ...
- poj 2155:Matrix(二维线段树,矩阵取反,好题)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 17880 Accepted: 6709 Descripti ...
- POJ 2155 Matrix (二维线段树)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 17226 Accepted: 6461 Descripti ...
- POJ 2155 Matrix (矩形)
date:公元2017年7月19日适逢周三: location:清北集训 杭州 point:二维树状数组/二维差分 Matrix Time Limit: 3000MS Memory Limit: ...
- poj 2155 Matrix (树状数组)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 16797 Accepted: 6312 Descripti ...
- POJ 2155 Matrix(树状数组+容斥原理)
[题目链接] http://poj.org/problem?id=2155 [题目大意] 要求维护两个操作,矩阵翻转和单点查询 [题解] 树状数组可以处理前缀和问题,前缀之间进行容斥即可得到答案. [ ...
随机推荐
- 《JavaScript 实战》:JavaScript 实现图片切割效果
很久之前就在一个网站的截取相片的功能中看到这个效果,也叫图片裁剪.图片剪切(设置一下也可以做出放大镜等类似的效果).当时觉得很神奇,碍于水平有限,没做出来.前些日子突然想做一个透镜效果,就突然想到了这 ...
- 【洛谷 P3203】 [HNOI2010]弹飞绵羊(LCT)
题目链接 把每个点和能跳到的点连边,于是就构成了一个森林. 查询操作就是该点到根的路径长度,修改操作就相当于删边再重新连边. 显然是\(LCT\)的强项. 查询时\(access(x),splay(x ...
- .ui/qrc文件自动生成.py文件
前天PL让我们做一个从手机里手机一些数据导出到excel文件里的Tool. 让我们用python去写一个.但是我们都没有学过python..呵呵! 然后昨天看了一些文档.做ui时还需要把图片写入qrc ...
- layui利用jQuery设置下拉列表的值
今天在利用jQuery动态设置下拉列表的值的时候确怎么也赋值不上去,其中用到了layui框架,源代码如下: $.post(contextPath+'/courseLibrary/getCourseBa ...
- 一个Servlet处理增删改查的方法
处理的思路是在servlet中定义不同的增删改查方法,页面请求 的时候携带请求的参数,根据参数判断调用不同的方法. package cn.xm.small.Servlet; import java.i ...
- (1)剑指Offer之斐波那契数列问题和跳台阶问题
一 斐波那契数列 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 问题分析: 可以肯定的是这一题通过递归的方式是肯定能做出来,但是这样会有 ...
- 初识smarty
个人体会(不完全正确):就是smarty就是为了更好的使得php/html结合做出来的一个框架. ,
- wifi钓鱼 强势拿你的wifi密码
钓鱼wifi 首先设一个场景!!! 如何得到一个免费的wifi 有人可能做过抓包跑包的方法或者跑pin码的方法然而这些方法可能会耗去你大量的时间(我曾经跑包花了一天的时间 跑pin码花了一晚上)感 ...
- cordova 从xcode7迁移到xcode8
环境以开发流程 当前项目使用的cordova环境 cordova 6.1.1 cordova-ios 3.9.2(vs15自动装的不知道在哪能改,所以考虑升级到vs17,能够手动指定) cordova ...
- [写出来才有价值系列:node.js]node.js 02-,learnyounode
安装learnyounode: npm install g learnyounode 官方说直接 但是我发现不行,很慢几乎就是死在那里了 还好有淘宝的东西给我们用https://npm.taobao. ...