C++-POJ2155-Matrix[数据结构][树状数组]
2024-08-30 16:23:22
二维树状数组+叉分
区间修改转化为单点修改
单点查询本来就可视为区间查询
于是本题可解
PS:不知道为什么函数传参数,传的是变量就会出现奇奇怪怪的问题?
所以读入单独写了,还有就是循环的初始化硬是多定义了一组变量,头大啊!
暂且把这种写法视为标准写法吧!
#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN=;
int t[MAXN][MAXN],n;
int lb(int i){return i&-i;}
void init(){memset(t,,sizeof(t));}
void add(int x,int y,int v){
for(int i=x;i<=n;i+=lb(i))for(int j=y;j<=n;j+=lb(j))t[i][j]+=v;
}
int sum(int x,int y){
int ans=;for(int i=x;i;i-=lb(i))for(int j=y;j;j-=lb(j))ans+=t[i][j];return ans;
}
int a,b,c,d,x,T;char s[];
void C(){cin>>a>>b>>c>>d;add(a,b,),add(c+,b,),add(a,d+,),add(c+,d+,);}
void Q(){cin>>a>>b;cout<<sum(a,b)%<<endl;} int main(){
for(scanf("%d",&x);x--;x?puts(""):){
scanf("%d%d",&n,&T),init();
while(T--)scanf("%s",s),s[]=='C'?C():Q();
}
return 0;
}
最新文章
- Ruby 多线程探索实践与归纳总结
- WPF 格式化输出- IValueConverter接口的使用
- linux Tomcat restart脚本简单版
- 格而知之3:Core Data的基本使用
- 统计处理包Statsmodels: statistics in python
- Spark入门PPT分享
- Day4:html和css
- Exception、Error、运行时异常与一般异常有何异同
- 美化你的GRUB,全面支持中文(菜单、提示、帮助)适用7.04-9.04
- TFDStoredProc执行sql server的部分存储过程报错,有的是好的。
- MyBatis开发Dao层的两种方式(Mapper动态代理方式)
- react-native 入门教程
- 几个经典的数学库之一学习---VCGlib(3)
- JDBC编程扩展
- 关于document.createDocumentFragment()(转)
- vux版本升级
- Cassandra go语言client使用
- Java中的并发工具类:CountDownLatch、CyclicBarrier和Semaphore
- malloc的可重入性和线程安全分析
- create_workqueue和create_singlethread_workqueue【转】