【树转数组】poj1195
/*
二维的树状数组:
更新某个元素时:
NO.1:c[n1],c[n2],c[n3],....,c[nm];
当中n1 = i,n(i+1) = ni+lowbit(ni);
nm+lowbit(nm)的值应该大于元素个数N。
NO.2:sum(k)=c[n1]+c[n2]+...+c[nm];
当中nm=k,n(i-1)=ni-lowbit(ni);
n1-lowbit(n1)的值应该小于0
----------------------------------------------------------------------
用二维的c[i][j]存储长条的和。。。、
---------------------------------------
元素的值加一个数:
void update(int x, int y, int a)
{
for(int i=x; i<=s; i+=lowbit(i))
{
for(int j=y; j<=s; j+=lowbit(j))
c[i][j] += a;
}
}
---------------------------------------------------
int sum(int x, int y)矩阵0到x和0到y的元素和
{
int ret = 0;
for(int i=x; i>0; i-=lowbit(i))
{
for(int j=y; j>0; j-=lowbit(j))
ret += c[i][j];
}
return ret;
}
------------------------------------------------
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#define INF 0x3f3f3f3f using namespace std; int op,s;
int x,y,a;
int l,b,r,t;
int c[1050][1050]; int lowbit(int x)
{
return x & (-x);
} void update(int x, int y, int a)
{
for(int i=x; i<=s; i+=lowbit(i))
{
for(int j=y; j<=s; j+=lowbit(j))
c[i][j] += a;
}
} int sum(int x, int y)
{
int ret = 0;
for(int i=x; i>0; i-=lowbit(i))
{
for(int j=y; j>0; j-=lowbit(j))
ret += c[i][j];
}
return ret;
} int main()
{
//freopen("input.txt","r",stdin);
while(1)
{
scanf("%d",&op);
if(op == 0)
{
scanf("%d",&s);
memset(c, 0, sizeof(c));
}
if(op == 1)
{
scanf("%d%d%d",&x,&y,&a);
update(x+1, y+1, a);
}
if(op == 2)
{
scanf("%d%d%d%d",&l, &b,&r,&t);
l++;
b++;
r++;
t++;
printf("%d\n",sum(r, t) - sum(r, b-1) - sum(l-1, t) + sum(l-1, b-1) );
}
if(op == 3)
return 0;
}
}
----------------------------------
快。。。。。
【树转数组】poj1195的更多相关文章
- 二维树状数组poj1195
题目链接:https://vjudge.net/problem/POJ-1195 题意:一开始输入0和一个s,0代表开始,s代表这是一个s*s的图,接下来会输入1或2,1代表进行单点修改,后面会接3个 ...
- poj1195(二维树状数组)
题目链接:https://vjudge.net/problem/POJ-1195 题意:有s*s的矩阵,初始化为全0,有两种操作,单点修改(x,y)的值,区间查询(x,y)的值(l<=x< ...
- POJ-1195 Mobile phones---裸的二维树状数组(注意下标从1,1开始)
题目链接: https://vjudge.net/problem/POJ-1195 题目大意: 直接维护二维树状数组 注意横纵坐标全部需要加1,因为树状数组从(1,1)开始 #include<c ...
- 二维树状数组(水题) POJ1195
前段时间遇到线段树过不了,树状数组却过了的题.(其实线段树过得了的) 回忆了下树状数组. 主要原理,还是二进制位数,每一项的和表示其为它的前((最后一位1及其后)的二进制数)和,可从二进制图来看.(用 ...
- 【POJ1195】【二维树状数组】Mobile phones
Description Suppose that the fourth generation mobile phone base stations in the Tampere area operat ...
- poj1195二维树状数组模板
二维树状数组和一维的也差不多,改一下add和query函数即可:即按行修改,行内单点修改即可 /* 二维树状数组,询问一个二维区间内的数之和 */ #include<iostream> # ...
- poj-1195(二维树状数组)
题目链接:传送门 题意:给出操作,按照操作进行. 思路:将树状数组设置为二维的就行了. 注意: (1)每次求出的面积是S(x2,y2)-S(x1-1,y2)-S(x2,y1-1)+S(x1-1,y1- ...
- 【poj1195】Mobile phones(二维树状数组)
题目链接:http://poj.org/problem?id=1195 [题意] 给出一个全0的矩阵,然后一些操作 0 S:初始化矩阵,维数是S*S,值全为0,这个操作只有最开始出现一次 1 X Y ...
- POJ1195(二维树状数组)
Mobile phones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 17176 Accepted: 7920 De ...
随机推荐
- 【u251】心灵的抚慰
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 病毒问题解决后,神牛们的心灵久久不能平静.他可以从一个程序联想到一些相似的程序.比如从程序1联想到2, ...
- Mahout快速入门教程 分类: B10_计算机基础 2015-03-07 16:20 508人阅读 评论(0) 收藏
Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现.分类.聚类等.Mahout最大的优点就是基于hadoop实现,把很多以前运行于单 ...
- iOS调试 - 基本技巧
在程序中,无论是你想弄清楚为什么数组中有3个对象而不是5个,或者为什么一个新的玩家开始之后,游戏在倒退——调试在这些处理过程中是比较重要的一部 分.通过本文的学习,我们将知道在程序中,可以使用的大多数 ...
- 《TCP/IP具体解释卷2:实现》笔记--域和协议
Net/3组把协议关联到一个域,而且用一个协议族常量来标识每一个域.Net/3还通过全部的编址方法将协议分组. 在一个域中 的每一个协议使用同类地址.而且每种地址仅仅被一个域使用.作为结果,一个域能通 ...
- C++对象模型——对象成员的效率 (Object Member Efficiency)(第三章)
3.5 对象成员的效率 (Object Mem ber Efficiency) 以下某个測试,目的在測试聚合(aggregation).封装(encapsulation),以及继承(Inheritan ...
- ubuntu系统安装和配置
1.分区信息 1.1 /boot分区 这个分区包括了操作系统的内核和在启动系统过程中所要用到的文件.假设有了一个单独的/boot启动分区,即使基本的根分区出现了问题,计算机依旧可以启动.这个分区的大小 ...
- MySQL慢日志的相关参数
slow-query-log = on #开启MySQL慢查询功能 slow_query_log_file = /data/mysql/testdb-slow.log #设置MySQL慢查询日志路径 ...
- IT增值服务客户案例(二):河南郑州大四实习生,职业规划和项目开发指导
客户整体情况,河南郑州大四在校学生,目前在企业实习,从事Java开发工作.有一定的项目开发经验,对Java周边技术有基本的理解. 客户购买的是"拜师学艺"服务,按月付款. 经过多次 ...
- 矩阵分解(matrix factorization)
1. 基本概念 针对高维空间中的数据集,矩阵分解通过寻找到一组基及每一个数据点在该基向量下的表示,可对原始高维空间中的数据集进行压缩表示. 令 X=[x1,⋯,xm]∈Rm×n 为数据矩阵,矩阵分解的 ...
- UE4.5.0的Kinect插件(Plugin)---插件使用说明<二>
声明:所有权利保留. 转载必须说明出处:http://blog.csdn.net/cartzhang/article/details/43563959 一.起因: 写了个UE4的Kinect的插件,结 ...