當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
bzoj1452: [JSOI2009]Count
生活随笔
收集整理的這篇文章主要介紹了
bzoj1452: [JSOI2009]Count
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2維bit。每個顏色建一個。
#include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn = 300+10;struct Bit2D {int a[maxn][maxn],n,m;inline int lowbit(int x) {return x&-x;}void add(int x,int y,int d) {for(int i=x;i<=n;i+=lowbit(i))for(int j=y;j<=m;j+=lowbit(j))a[i][j]+=d;}int query(int x,int y) {int res =0;for(int i=x;i;i-=lowbit(i))for(int j=y;j;j-=lowbit(j)) res+=a[i][j];return res;}int query2(int x1,int x2,int y1,int y2) {int res=query(x2,y2)+query(x1-1,y1-1)-query(x1-1,y2)-query(x2,y1-1);return res;}void build(int a,int b) {n=a; m=b;} } bit[110];int a[maxn][maxn];void op1() {int x,y,c;scanf("%d%d%d",&x,&y,&c);bit[a[x][y]].add(x,y,-1);bit[c].add(x,y,1);a[x][y]=c; }void op2() {int x1,x2,y1,y2,c;scanf("%d%d%d%d%d",&x1,&x2,&y1,&y2,&c);printf("%d\n",bit[c].query2(x1,x2,y1,y2)); }int main() {int n,m,q;scanf("%d%d",&n,&m);for(int i=1;i<=100;i++) bit[i].build(n,m);for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) {scanf("%d",&a[i][j]);bit[a[i][j]].add(i,j,1);}scanf("%d",&q);for(int i=1,op;i<=q;i++) {scanf("%d",&op);if(op==1) op1();else op2();}return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/invoid/p/5433160.html
總結(jié)
以上是生活随笔為你收集整理的bzoj1452: [JSOI2009]Count的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Entity Framework异步查询
- 下一篇: 关于JQUery.parseJSON()