【树状数组(二维)】poj 1195 Mobile phones(外:hdu 2642 Stars)
来源:互联网 发布:deepin linux安装教程 编辑:程序博客网 时间:2024/06/06 00:22
二维插点,求区间:
4(sum(x2,y2) + 1(sum(x1-1,y1-1))- 2(sum(x1-1,y2))-3(sum(x2,y1-1)))
http://poj.org/problem?id=1195
分析:裸二维树状数组
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int NM=1030;__int64 a[NM][NM];int lowbit(int x){return x&(-x);}void add(int x,int y,int t){for(int i=x;i<NM;i+=lowbit(i))for(int j=y;j<NM;j+=lowbit(j)){if(a[i][j]+t<0) a[i][j]=0; //else a[i][j]+=t;}}__int64 sum(int x,int y){__int64 ans=0;for(int i=x;i>0;i-=lowbit(i))for(int j=y;j>0;j-=lowbit(j))ans+=a[i][j];return ans;}int main(){int x1,y1,x2,y2,t,n,temp;scanf("%d%d",&t,&n);while(scanf("%d",&t)){if(t==3) break;else if(t==1){scanf("%d%d%d",&x1,&y1,&temp);x1++,y1++;add(x1,y1,temp);}else if(t==2){scanf("%d%d%d%d",&x1,&y1,&x2,&y2);x1++,y1++,x2++,y2++;printf("%I64d\n",sum(x2,y2)+sum(x1-1,y1-1)-sum(x1-1,y2)-sum(x2,y1-1));}}return 0;}
http://acm.hdu.edu.cn/showproblem.php?pid=2642
分析:裸二维树状数组
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int NM=1005;int a[NM][NM];bool f[NM][NM];int lowbit(int x){return x&(-x);}void add(int x,int y,int t){for(int i=x;i<NM;i+=lowbit(i))for(int j=y;j<NM;j+=lowbit(j))a[i][j]+=t;}int sum(int x,int y) //从1开始算{int ans=0;for(int i=x;i>0;i-=lowbit(i))for(int j=y;j>0;j-=lowbit(j))ans+=a[i][j];return ans;}int main(){int x1,y1,x2,y2,x,y,T;char cc[5];while(scanf("%d",&T)!=EOF){memset(f,0,sizeof(f)); //开始时灯都是灭的memset(a,0,sizeof(a));while(T--){scanf("%s",cc);if(cc[0]=='D'){scanf("%d%d",&x,&y);x++,y++;if(!f[x][y]) continue;f[x][y]=false;add(x,y,-1);}else if(cc[0]=='B') //bright{scanf("%d%d",&x,&y);x++,y++;if(f[x][y]) continue;f[x][y]=true;add(x,y,1);}else{scanf("%d%d%d%d",&x1,&x2,&y1,&y2);x1++,y1++,x2++,y2++;if(x1>x2) swap(x1,x2);if(y1>y2) swap(y1,y2);//注意边界printf("%d\n",sum(x2,y2)+sum(x1-1,y1-1)-sum(x2,y1-1)-sum(x1-1,y2)); }}}return 0;}
0 0
- 【树状数组(二维)】poj 1195 Mobile phones(外:hdu 2642 Stars)
- POJ Mobile phones(1195)(二维树状数组)
- 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(二维树状数组)
- Jquery Ajax 异步访问后台(解决url乱码)
- hibernate-2014-01-27
- JSON快速入门
- Linux内核学习笔记导读
- 黑马程序员__11java基础字符串
- 【树状数组(二维)】poj 1195 Mobile phones(外:hdu 2642 Stars)
- 基于注解的SPRINGMVC+FREEMARKER环境搭建
- 备忘:crontab没有PATH
- FusionCharts 3D帕累托图
- iOS多线程系列(1)
- OpenWrt编译目标world的依赖
- 回顾2013,对工作的一点感悟
- Thinking in BigData(四)大数据之“大”的来源与价值
- 2.4 python中的字符串、索引和截取 [python入门教程]