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 [题目大意] 要求维护两个操作,矩阵翻转和单点查询 [题解] 树状数组可以处理前缀和问题,前缀之间进行容斥即可得到答案. [ ...
随机推荐
- Spring websocket浏览器连接时出现404错误
1.场景 在用websocket做一个简单的数据导入页面同步显示后台进度功能的时候,浏览器出现连接不上的错误: WebSocket connection to 'ws://localhost:8080 ...
- 【BZOJ】3036: 绿豆蛙的归宿
[题意]给定DAG带边权连通图,保证所有点都能到达终点n,每个点等概率沿边走,求起点1到终点n的期望长度.n<=10^5. [算法]期望DP [题解]f[i]表示到终点n的期望长度. f[n]= ...
- 【NOIP】提高组2014
Day1 T1(暴力):大水题 #include<cstdio> ][]={ ,,,,, ,,,,, ,,,,, ,,,,, ,,,,, }; ],b[]; int main() { in ...
- SpringMVC可以配置多个拦截后缀*.action和.do等
首先介绍一下.do和.action的区别: struts早期的1版本,以.do为后缀. 同时spring的MVC也是以.do为后缀. 几年前struts收购鼎鼎大名的webwork2和开发团队后,将w ...
- JS的全局函数eval解析JSON字符串
JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需. ...
- IT人员必备linux安全运维之Ssh用途、安全性、身份认证以及配置……【转】
SSH一般用途 提供shell,解决telnet不安全的传输 1.修改默认ssh默认端口 vi /etc/ssh/sshd_config 修改之后重启 >systemctl restart ss ...
- C# 解决窗体闪烁
C# 解决窗体闪烁 在Windows窗体上造成“闪烁”的窗体上有很多控制.造成这种闪烁的原因有两个: 1.当控件需要被绘制时,Windows发送一个控件两个消息.第一个(WM_ERASEBKGND)导 ...
- HDU 5348 MZL's endless loop(DFS去奇数度点+欧拉回路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5348 题目大意:给你一张图,有n个点,和m条无向边,让你把m条无向边变成有向边,使得每个节点的|出度- ...
- 转- 阿里云、Amazon、Google云数据库方案架构与技术分析
「一切都会运行在云端」. 云时代早已来临,本文着眼于顶级云服务商云服务商的云数据库方案背后的架构,以及笔者最近观察到的一些对于云数据库有意义的工业界的相关技术的进展,希望读者能有所收获. 现在越来越多 ...
- ubuntu包管理命令apt和dpkg的用法
apt-get命令: apt-get是debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索.安装.升级.卸载 ...