LOJ P10118 打鼹鼠 题解
2024-08-27 08:26:54
每日一题 day17 打卡
Analysis
二维树状数组的单点修改和区间查询,和一维的差不多
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define int long long
#define maxn 4096+10
#define INF 2147483647/2-1
using namespace std;
inline int read()
{
int x=;
bool f=;
char c=getchar();
for(; !isdigit(c); c=getchar()) if(c=='-') f=;
for(; isdigit(c); c=getchar()) x=(x<<)+(x<<)+c-'';
if(f) return x;
return -x;
}
inline void write(int x)
{
if(x<){putchar('-');x=-x;}
if(x>)write(x/);
putchar(x%+'');
}
int n,m;
int tree[maxn][maxn];
inline int lowbit(int num)
{
return num&-num;
}
inline void build(int sx,int sy,int num)
{
for(int i=sx;i<=n;i+=lowbit(i))
for(int j=sy;j<=m;j+=lowbit(j))
tree[i][j]+=num;
}
inline int ask(int sx,int sy)
{
int ans=;
for(int i=sx;i>=;i-=lowbit(i))
for(int j=sy;j>=;j-=lowbit(j))
ans+=tree[i][j];
return ans;
}
signed main()
{
n=read();m=read();
int in=;
while(scanf("%d",&in)!=EOF)
{
if(in==)
{
int x=read(),y=read(),k=read();
build(x,y,k);
}
if(in==)
{
int a=read(),b=read(),c=read(),d=read();
write(ask(c,d)-ask(a-,b-));
printf("\n");
}
}
return ;
}
请各位大佬斧正(反正我不认识斧正是什么意思)
最新文章
- 美国在研新药_读取单个PDF
- html focus事件小学问
- Android中BroadcastReceiver广播
- Location 对象
- ZooKeeper分布式集群安装
- Winform下richtextbox截图实现
- [转]android开发之字节顺序
- 怎样绘制ZBrush中的纹理
- Android procrank , showmap 内存分析
- APICloud云修复再升级 增加热重启APP功能
- new Date()时间对象
- POJ 1419
- js 倒计时 button不可用
- [PR &; ML 1] [Introduction] Informal Basic Concepts
- Computed Observable的参数
- stm32按键识别
- C#之读写压缩文件
- 移动端line-height问题
- 获取Field成员变量类
- Java中的异常 Exceptions