题目链接【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的更多相关文章

  1. 【POJ】2155 Matrix

    二维树状数组. /* poj2155 */ #include <iostream> #include <string> #include <map> #includ ...

  2. POJ 2155 Matrix (D区段树)

    http://poj.org/problem?id=2155 Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 1 ...

  3. POJ 2155 Matrix【二维树状数组+YY(区间计数)】

    题目链接:http://poj.org/problem?id=2155 Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissio ...

  4. POJ 2155 Matrix

    二维树状数组....                          Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissio ...

  5. poj 2155:Matrix(二维线段树,矩阵取反,好题)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17880   Accepted: 6709 Descripti ...

  6. POJ 2155 Matrix (二维线段树)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17226   Accepted: 6461 Descripti ...

  7. POJ 2155 Matrix (矩形)

    date:公元2017年7月19日适逢周三: location:清北集训 杭州 point:二维树状数组/二维差分 Matrix Time Limit: 3000MS   Memory Limit:  ...

  8. poj 2155 Matrix (树状数组)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 16797   Accepted: 6312 Descripti ...

  9. POJ 2155 Matrix(树状数组+容斥原理)

    [题目链接] http://poj.org/problem?id=2155 [题目大意] 要求维护两个操作,矩阵翻转和单点查询 [题解] 树状数组可以处理前缀和问题,前缀之间进行容斥即可得到答案. [ ...

随机推荐

  1. mongoDB与sql聚合操作对应图

    SQL Terms, Functions, and Concepts MongoDB Aggregation Operators WHERE $match GROUP BY $group HAVING ...

  2. 关于jQuery UI 使用心得及技巧

    1 jQuery UI 有时你仅仅是为了实现一个渐变的动画效果而不得不把javascrip 重新学习一遍然后书写大量代码.直到jQuery的出现,让开发人员从一大堆繁琐的js代码中解脱,取而代之几行j ...

  3. XMLHttpRequest 整理

    看了SF 上的一篇文章感触颇深:你真的会使用XMLHttpRequest吗? 在这我写上我读后的笔记: <!DOCTYPE html> <html lang="en&quo ...

  4. 51Nod 1256 扩展欧几里得求乘法逆元

    给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的. Input 输入2个数M, N中间用 ...

  5. 组合数+逆元 A - Chat Group Gym - 101775A

    题目链接:https://cn.vjudge.net/contest/274151#problem/A 具体思路:我们可以先把所有的情况算出来,为2^n.然后不合法的情况减去就可以了.注意除法的时候要 ...

  6. 某团队线下赛AWD writeup&Beescms_V4.0代码审计

    还是跟上篇一样.拿别人比赛的来玩一下.  0x01 预留后门 连接方式: 0x02 后台登录口SQL注入 admin/login.php 在func.php当中找到定义的check_login函数 很 ...

  7. Git远程操作详解【转】

    转自:http://www.ruanyifeng.com/blog/2014/06/git_remote.html 作者: 阮一峰 日期: 2014年6月12日 Git是目前最流行的版本管理系统,学会 ...

  8. 宝塔Linux面板新手安装教程【转】

    一.使用远程连接软件 (如 Putty.XShell) 连接你的Linux服务器,本教程以 Putty 为例. 1.动 Putty.exe 程序,进入 Putty 主界面. 2.在 Host Name ...

  9. c++动态规划dp算法题

    问题1:找硬币,换钱的方法 输入: penny数组代表所有货币的面值,正数不重复 aim小于等于1000,代表要找的钱 输出:换钱的方法总数 解法1:经典dp,空间复杂度O(n*aim) class ...

  10. Java Web Project Problems

    A: 项目红叉 1. 检验 Java Builder  Path 2. 检查 Projects Facets 3. 查看 Targets Runtimes B:项目红感叹号 1. 查看问题栏 Prob ...