BZOJ 1452: [JSOI2009]Count 二维树状数组
2015-12-11 23:10
866 查看
1452: [JSOI2009]Count
Description
//meek ///#include<bits/stdc++.h> #include <iostream> #include <cstdio> #include <cmath> #include <string> #include <cstring> #include <algorithm> #include <queue> #include <map> #include <set> #include <stack> #include <sstream> #include <vector> using namespace std ; typedef long long ll; #define mem(a) memset(a,0,sizeof(a)) #define pb push_back #define fi first #define se second #define MP make_pair inline ll read() { ll x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f; } //**************************************** const int N=305; const ll INF = 1ll<<61; const int inf = 1<<31; const int mod= 1000000007; int C[111][315][315],a[514][505],n,m; void update(int x,int y,int c,int val) { for(int i=x;i<=N;i+=i&(-i)) { for(int j=y;j<=N;j+=j&(-j)) { C[c][i][j]+=val; } } } int ask(int x,int y,int c) { int sum=0; for(int i=x;i>=1;i-=i&(-i)) { for(int j=y;j>=1;j-=j&(-j)) { sum+=C[c][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); } int q,x,y,t,c,x1,x2,y1,y2; scanf("%d",&q); for(int i=1;i<=q;i++) { scanf("%d",&t); if(t==1) { scanf("%d%d%d",&x,&y,&c); update(x,y,a[x][y],-1); a[x][y]=c; update(x,y,c,1); } else { scanf("%d%d%d%d%d",&x1,&x2,&y1,&y2,&c); printf("%d\n",(ask(x2,y2,c)-ask(x1-1,y2,c)-ask(x2,y1-1,c)+ask(x1-1,y1-1,c))); } } return 0; }
代码
相关文章推荐
- 初识Jsoup之解析HTML
- 2015/12/11--javascript消息框
- js 模仿块级作用域(私有作用域)、私有变量
- JSP EL表达式详细介绍(转)
- var obj = eval(result); 解析json
- 图片的回显。js
- js中的focus()聚焦
- 车牌号校验js
- js电话号码校验
- <select> js中 设置选重
- js固定两位小数toFixed(2)
- 创建ArcGIS API for JavaScript的第一个示例程序
- JS插件之HighSlider
- JavaScript_清除表单数据_条件查询
- json数据前台解析 修改check属性用prop()
- include与jsp:include区别
- js中Date日期初始化方法
- 用JS阻止事件冒泡
- javascript 得到cookie
- javascript setAttribute使用兼容