poj 1195 Mobile phones(树状数组)
来源:互联网 发布:java 迭代子模式 编辑:程序博客网 时间:2024/06/01 19:24
题目链接:http://poj.org/problem?id=1195
题目大意:
1 .
0 n 给定一个n*n的所有点都为0的矩阵
1 a b x表示把[a,b]值加上x
2 x1 y1 x2 y2表示x1<= x <= x2 , y1 <= y <= y2求这个小矩形的面积
3 表示输入结束
2 简单的二维树状数组,但是这边要注意的是操作2的时候一定不能够把维度给弄反了,x1 x2表示的是x的范围而y1 y2表示的是y的范围
3 题目还有一个trick就是当[a,b]加上x后如果值为负数,那么应该把值设为0(WA点)
4.求和的操作理解一下
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int MAXN =1050;int n;int num[MAXN][MAXN];long long treeNum[MAXN][MAXN];int lowbit(int x){ return x&(-x);}/*int getSum(int x){//一维 int sum = 0; while(x){//将以x为根节点的数 相当于求其叶节点的和 但其非叶节点等于其两个子节点的和 sum += treeNum[x]; x -= lowbit(x); } return sum;}*/long long getSum(int x,int y){//二维 long long sum = 0; for(int i=x;i>0;i-=lowbit(i))for(int j=y;j>0;j-=lowbit(j)){sum += treeNum[i][j];} return sum;}/*void add(int x , int val){//一维 while(x < MAXN){//相当于一个树 他将其自己以及他的父节点一路向上都加val treeNum[x] += val; x += lowbit(x); }}*/void add(int x ,int y, int val){//二维 if(num[x][y]+val < 0) val = -num[x][y];num[x][y]+=val; for(int i=x;i<MAXN;i+=lowbit(i))for(int j=y;j<MAXN;j+=lowbit(j)) {treeNum[i][j] += val;}}int main(){int x,y,c;int a,b;int k; while(~scanf("%d" , &k)){if(k==0){memset(treeNum,0,sizeof treeNum);memset(num,0,sizeof num);scanf("%d",&n);}else if(k==1){scanf("%d%d%d",&x,&y,&c);x++,y++;add(x,y,c);}else if(k==2){scanf("%d%d%d%d",&x,&y,&a,&b);x++,y++,a++,b++;long long ans=0;ans=getSum(a,b)-getSum(x-1,b)-getSum(a,y-1)+getSum(x-1,y-1);printf("%lld\n",ans);}elsebreak; } return 0;}
阅读全文
0 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 二维树状数组
- Mobile Phones poj 1195--二维树状数组
- POJ 1195 Mobile phones【二维树状数组】
- POJ 1195 Mobile phones(二维树状数组)
- poj 1195 - Mobile phones(树状数组)
- POJ 1195 Mobile phones(二维树状数组)
- [树状数组]POJ 1195 Mobile phones
- python转exe可执行程序在其他系统上运行时出现的错误
- Tiled结合Unity实现瓦片地图——Tiled2Unity篇
- unity插件TextMeshPro导入后的一个出错提示的解决办法-Could not load type 'UnityEngine.AdditionalCanvasShaderChannels'
- sql where和on的区别
- Amazon面试题
- poj 1195 Mobile phones(树状数组)
- Android自定义状态栏遇到的一个小坑
- please insert the disc labeled ‘Ubuntu 7.10 _Gutsy Gibbon’” error
- sql查询所有表名和字段名称
- windows下安装mysql遇到的一些坑
- Java String方法使用
- Java的JAR包, EAR包 ,WAR包内部结构
- Java之字符串常用操作
- dubbo源码 编译 测试