博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu-See you~(二维树状数组)
阅读量:4286 次
发布时间:2019-05-27

本文共 1394 字,大约阅读时间需要 4 分钟。

#include
#include
#include
#include
#include
using namespace std;int map[1005][1005],map1[1005][1005];;int lowbit(int x){ return x&(-x);}void add(int x,int y,int num){ for(int i = x; i <=1001; i+=lowbit(i)) for(int j = y; j <= 1001; j+=lowbit(j)) map[i][j] += num;}int getsum(int x,int y){ int res = 0; for(int i = x; i > 0; i -= lowbit(i)) for(int j = y; j > 0; j -= lowbit(j)) res += map[i][j]; return res;}int main(){ int A = 1001; int t,n,Case = 1; scanf("%d",&t); while(t--) { printf("Case %d:\n",Case++); memset(map,0,sizeof(map)); for(int i=1; i<=A; i++) for(int j=1; j<=A; j++) { add(i,j,1); map1[i][j]=1; } cin>>n; int x1,x2,y1,y2,w; while(n--) { char op; cin>>op; if(op=='A') { scanf("%d%d%d",&x1,&y1,&w); x1++,y1++; add(x1,y1,w); map1[x1][y1]+=w; } else if(op=='D') { scanf("%d%d%d",&x1,&y1,&w); x1++,y1++; if(map1[x1][y1]
x2)swap(x1,x2); if(y1>y2)swap(y1,y2); int sum=getsum(x2,y2)-getsum(x2,y1-1)-getsum(x1-1,y2)+getsum(x1-1,y1-1); printf("%d\n",sum); } } }}

转载地址:http://hysgi.baihongyu.com/

你可能感兴趣的文章
逻辑回归 和 朴素贝叶斯 两者间的区别
查看>>
模块度与Louvain社区发现算法
查看>>
欢迎使用CSDN-markdown编辑器
查看>>
机器学习降维算法四:Laplacian Eigenmaps 拉普拉斯特征映射
查看>>
机器学习降维算法一:PCA(主成分分析算法)
查看>>
非常见降维方法:Laplacian Eigenmaps 拉普拉斯特征映射
查看>>
NMF 非负矩阵分解(Non-negative Matrix Factorization)实践
查看>>
谱聚类(spectral clustering)原理总结
查看>>
CPM(Cluster Percolation method)派系过滤算法
查看>>
多目标进化算法(MOEAs)概述
查看>>
AdaBoost与随机森林区别
查看>>
坐标下降法(Coordinate descent)
查看>>
Matlab plot画图 坐标字体、字号、范围、间隔等的设置
查看>>
LATEX调整公式、图片与正文间距离,文字间距离,调整空白大小
查看>>
eps格式图像空白边缘裁剪
查看>>
稀疏问题的学习
查看>>
机器学习(6) MovieLens数据集
查看>>
matlab读取UCI中获取的.data文件
查看>>
matlab错误:Subscript indices must either be real positive integers or logicals.
查看>>
行列式及其性质
查看>>