POJ 1195--Mobile phones (二维树状数组)
2014-01-21 16:08
344 查看
题目链接
一棵很裸的二维树状数组,主要是学到了很多,所以纪念下。
不会二维其实,然后自己YY了一下,YY对了,然后又改错了= =。。。
最后还是请教了喵女神。
然后,范围看错了,用的 int64 WA的惨不兮兮的。
(今天才知道,输出木有%lf 这个标准..Orz C语言弱渣给跪了今天学到很多~ 比如用__int64 会慢很多,然后数组的话,容易出错。double型的输出也用%f.)
其实二维和一维都差不多。
这个题,注意下那个矩形的面积就行了。附上代码:
一棵很裸的二维树状数组,主要是学到了很多,所以纪念下。
不会二维其实,然后自己YY了一下,YY对了,然后又改错了= =。。。
最后还是请教了喵女神。
然后,范围看错了,用的 int64 WA的惨不兮兮的。
(今天才知道,输出木有%lf 这个标准..Orz C语言弱渣给跪了今天学到很多~ 比如用__int64 会慢很多,然后数组的话,容易出错。double型的输出也用%f.)
其实二维和一维都差不多。
这个题,注意下那个矩形的面积就行了。附上代码:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define LL __int64 //#define LOCAL using namespace std; const int INF=0x3ffffff; const int MAXN=1300; int a[MAXN][MAXN],c[MAXN][MAXN],ans; int n,x,y,z,l,r,op; void Init() { for(int i=0;i<=n;i++) for(int j=0;j<=n;j++) c[i][j]=0; } int lowbit(int xx) { return xx&(-xx); } void add(int xx,int yy,int val) { int yyy; while(xx<=n) { yyy=yy; while(yyy<=n) { c[xx][yyy]+=val; yyy+=lowbit(yyy); } xx+=lowbit(xx); } } int sum(int xx,int yy) { int rt=0,yyy=yy; while(xx) { yyy=yy; while(yyy) { rt+=c[xx][yyy]; yyy-=lowbit(yyy); } xx-=lowbit(xx); } return rt; } int main() { #ifdef LOCAL freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif while(~scanf("%d",&op)) { if(op==3) break; else if(op==0) { scanf("%d",&n); Init(); } else if(op==1) { scanf("%d%d%d",&x,&y,&z); add(x+1,y+1,z); } else if(op==2) { ans=0; scanf("%d%d%d%d",&x,&y,&z,&r); ans=sum(z+1,r+1)+sum(x,y)-sum(x,r+1)-sum(z+1,y); printf("%d\n",ans); } } return 0; }
相关文章推荐
- poj 1195 Mobile phones (二维 树状数组)
- POJ 1195 Mobile phones (二维树状数组)
- poj 1195 Mobile phones 二维树状数组
- POJ 1195 Mobile phones (二维树状数组)
- POJ 1195 Mobile phones (二维树状数组)
- POJ 1195 Mobile phones (二维树状数组)
- poj 1195 Mobile phones (二维树状数组)
- POJ 1195 Mobile phones (二维树状数组)
- POJ 1195 Mobile phones (二维树状数组)
- poj 1195 Mobile phones (二维树状数组)
- poj 1195 Mobile phones (二维树状数组)
- poj 1195 Mobile phones 二维树状数组
- poj 1195 Mobile phones (二维树状数组)
- POJ 1195 Mobile phones (二维树状数组)
- POJ 1195 Mobile phones (二维树状数组或线段树)
- POJ 1195 Mobile phones (二维树状数组或线段树)
- POJ 1195 Mobile phones (二维树状数组)
- POJ 1195 Mobile phones 二维树状数组
- POJ 1195 Mobile phones 二维树状数组
- POJ 1195 Mobile phones 二维树状数组