[bzoj 1452] Count (树状数组)
来源:互联网 发布:软件性能测试视频教程 编辑:程序博客网 时间:2024/06/05 10:32
传送门
题目描述
输入
输出
样例输入
样例输出
1
2
提示
思路
因为权值最大为100 所以对于每一种权值建一个树状数组
然后维护和查询就不多说了
(PS:输出千万别用cout 我RE了10次 改printf就A了!! QwQ)
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,m,q;int a[305][305];int t[105][305][305];//每一个权值建立的二维数组int lowbit(int x){ return x&(-x);}void update(int x,int y,int p,int k){ for(int i=x;i<=n;i+=lowbit(i)) for(int j=y;j<=m;j+=lowbit(j)) t[p][i][j]+=k;}int getsum(int x,int y,int p){ int sum=0; for(int i=x;i;i-=lowbit(i)) for(int j=y;j;j-=lowbit(j)) sum+=t[p][i][j]; return sum;}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ scanf("%d",&a[i][j]); update(i,j,a[i][j],1); } } scanf("%d",&q); for(int i=1;i<=q;i++){ int k; scanf("%d",&k); int x1,x2,y1,y2,c; if(k==1){ scanf("%d %d %d",&x1,&y1,&c); update(x1,y1,a[x1][y1],-1); a[x1][y1]=c; update(x1,y1,a[x1][y1],1); } else{ scanf("%d%d%d%d%d",&x1,&x2,&y1,&y2,&c); int ans=0; ans=getsum(x2,y2,c)-getsum(x1-1,y2,c)-getsum(x2,y1-1,c)+getsum(x1-1,y1-1,c); cout<<ans<<endl; } } return 0;}
阅读全文
0 0
- 【树状数组】bzoj 1452 Count
- [bzoj 1452] Count (树状数组)
- BZOJ 1452 [JSOI2009]Count 二维树状数组
- |BZOJ 1452|树状数组|[JSOI2009]Count
- BZOJ 1452: [JSOI2009]Count 二维树状数组
- BZOJ 1452: [JSOI2009]Count 二维树状数组
- BZOJ 1452: [JSOI2009]Count (二维树状数组)
- BZOJ 1452 JSOI 2009 Count 二维树状数组
- 【bzoj 1452】[JSOI2009]Count(二维树状数组)
- 二维树状数组(bzoj 1452: [JSOI2009]Count)
- [二维树状数组]BZOJ 1452—— [JSOI2009]Count
- 【BZOJ】【P1452】【JSOI2009】【Count】【二维树状数组】
- bzoj 1452 二维树状数组
- 1452: [JSOI2009]Count 二维树状数组
- [bzoj1452][树状数组]Count
- bzoj 2762 树状数组
- bzoj 3155 树状数组
- bzoj 3594 树状数组
- nginx配置HTTPS
- SQL中判断字符串中包含字符的方法
- 关于List的remove()方法
- 设计模式之单例模式(线程安全)
- CentOS中yum源配置文件手动修改
- [bzoj 1452] Count (树状数组)
- 移动web开发
- Class.forName()用法详解
- 开放封闭原则
- J2EE中session的深入理解
- 百度定位SDK出错:unable to resolve static field 155 (SUPPORTED_ABIS) in Landroid/os/Build
- Android初级教程
- Weblogic在Linux上节点服务器启动正常,计算机连接不上
- Android进程间通信(1)-AIDL