1336 : Matrix Sum (hihocoder)
2024-08-23 03:22:48
题目链接: 点击打开链接
二维树状数组,百度一大堆,我只是存代码的
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string> using namespace std;
typedef long long int LL;
const int INF=2e9+1e8;
const int MM=1010;
const LL MOD=1e9+7; LL n,m,bitnum[MM][MM]; LL lowbit(LL x)
{
return x&(-x);
}
void add(LL xx,LL yy,LL num)
{
for(int x=xx;x<=n+1;x+=lowbit(x))
{
for(int y=yy;y<=n+1;y+=lowbit(y))
{
bitnum[x][y]+=num;
}
}
}
LL sum(LL l,LL r)
{
LL ans=0;
for(int x=l;x>0;x-=lowbit(x))
{
for(int y=r;y>0;y-=lowbit(y))
{
ans+=(bitnum[x][y])%MOD;
}
}
return ans%MOD;
}
LL getsum(LL x1,LL y1,LL x2,LL y2)
{
LL ans=sum(x2,y2)-sum(x1-1,y2)-sum(x2,y1-1)+sum(x1-1,y1-1);
while(ans<0) ans+=MOD;
return ans;
} int main()
{
memset(bitnum,0,sizeof(bitnum));
cin>>n>>m;
for(int i=0;i<m;i++)
{
char opt[10];
LL x1,y1,x2,y2,val;
cin>>opt;
if(opt[0]=='A')
{
cin>>x1>>y1>>val;
add(x1+1,y1+1,val);
}
else
{
cin>>x1>>y1>>x2>>y2;
cout<<getsum(x1+1,y1+1,x2+1,y2+1)<<endl;
}
}
return 0;
}
最新文章
- Python:Pycharm下无法导入安装好的第三方模块?
- 静态成员函数(面向对象的static关键字)
- 堆(Heap)和二叉堆(Binary heap)
- MyEclipse2015对Javascript自动提示的终极支持
- ZOJ 3903 Ant(数学,推公示+乘法逆元)
- stat~~~访问文件状态的利器
- [转] Linux下查看文件和文件夹大小
- 转义字符(\)对JavaScript中JSON.parse的影响
- 1782: [Usaco2010 Feb]slowdown 慢慢游
- java中File类应用:遍历文件夹下所有文件
- mysql 5.7.19 安装
- POJ-1068 Parencodings---模拟括号的配对
- 002.[python学习]python编码规范pep8学习——PEP8第一部分代码布局
- python后端从数据库请求数据给到前端的具体实现
- 跟着柴毛毛学Spring(3)——简化Bean的配置
- bzoj1001狼抓兔子
- 【小记】FreeRTOS任务创建后但任务中为空时运行错误
- 动态加载jar包(二)
- Oracle 跨库查询表数据(不同的数据库间建立连接)
- BZOJ 2466 中山市选2009 树 高斯消元+暴力