题目链接【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 ;
}

最新文章

  1. Insight API开源项目介绍
  2. 深度优先搜索(DFS)
  3. 【leetcode❤python】409. Longest Palindrome
  4. jquery.dataTables插件使用例子详解
  5. synchronize的心得
  6. SQL Server 的各种查询和要申请的锁
  7. 将鼠标移到文本弹出一些字幕CSS达到,不及格JS达到
  8. For循环的实质
  9. C# 委托还能这样用
  10. console.table(),在控制台以表格形式输出对象
  11. How to setup Tensorflow inception-v3 model on Windows
  12. Python函数--装饰器进阶
  13. Pilosa文档翻译(一)导言、安装
  14. kubernetes1.4新特性(一):支持sysctl命令
  15. 自制URL转换器
  16. C# 实现CRC16校验
  17. 洛谷P4172 [WC2006]水管局长 (LCT,最小生成树)
  18. (转)Maven学习总结(三)——使用Maven构建项目
  19. WCF 和 ASP.NET Web API
  20. 安装 nvm 遇到的坑

热门文章

  1. 【51nod】1222 最小公倍数计数 莫比乌斯反演+组合计数
  2. HttpUtility.UrlEncode与Server.UrlEncode()转码区别
  3. Mac 10.9x下安装配置phonegap3.0开发环境 (涉及android sdk配置)
  4. ThinkPHP自定义错误页面、成功页面及异常页面
  5. Coursera在线学习---第二节.Octave学习
  6. Java简单爬虫(一)
  7. php sprintf格式化注入
  8. 安全测试===CSRF攻击简介
  9. 005zabbix3.0报错记录
  10. 获取ios设备系统信息的方法 之 [UIDevice currentDevice]