HRBUST 1161 树状数组区间更新求和
Leyni | ||||||
|
||||||
Description | ||||||
Leyni被人掳走,身在水深火热之中... 这个保护圈由n个小的小护盾围成一圈,从1到n编号。当某一块小护盾受到攻击的时候,小护盾就会抵消掉这次攻击,也就是说对这一块小护盾的攻击是无效攻
现在小奈叶专心战斗,Leyni昏迷,他们无法得知小护盾遭受的有效攻击次数,他们需要你的帮助。
只要能帮到他们,Leyni就会赠送出一份小奈叶写真集。 ![]() |
||||||
Input | ||||||
第一行是一个整数T,表示有多少组测试数据。 |
||||||
Output | ||||||
每一组测试数据,先输出一行"Case i:",i表示第i组测试数据,从1开始计数。 |
||||||
Sample Input | ||||||
1 |
||||||
Sample Output | ||||||
Case 1: |
#include <iostream>
#include <stdio.h>
#include <string.h> using namespace std;
const int MAXN=;
int c[MAXN],p[MAXN];
int xiji;
int n,q,t,aa,b; int lowbit(int x)
{
return x&(-x);
}
void add(int x,int val)
{
int i=x;
while(i<=n)
{
c[i]+=val;
i+=lowbit(i);
}
}
int get_sum(int x)
{
int s=;
while(x>)
{
s+=c[x];
x-=lowbit(x);
}
return s;
} int main()
{
int k;
int s;
char str[];
s=;
scanf("%d",&k);
for(int i=;i<k;i++)
{
s++;
memset(c,,sizeof(c));
scanf("%d%d%d",&n,&q,&t);
for(int i=; i<=n; i++)
p[i]=-t;
xiji=;
printf("Case %d:\n",s);
for(int i=; i<=q; i++)
{
scanf("%s",&str);
if(str[]=='A')
{
xiji++;
scanf("%d",&aa);
if(p[aa]+t<=xiji)
p[aa]=xiji;
else
{
add(aa,);
}
}
else if(str[]=='Q')
{
scanf("%d%d",&aa,&b);
if(aa>b)
swap(aa,b);
printf("%d\n",get_sum(b)-get_sum(aa-));
}
}
}
return ;
} 注:没有线段树快哦~~~~ get_sum()函数求起点到该点的和 ******************************************************
http://blog.csdn.net/shahdza/article/details/6314818
******************************************************
HRBUST 1161 树状数组区间更新求和的更多相关文章
- 牛客网 暑期ACM多校训练营(第二场)J.farm-STL(vector)+二维树状数组区间更新、单点查询 or 大暴力?
开心.jpg J.farm 先解释一下题意,题意就是一个n*m的矩形区域,每个点代表一个植物,然后不同的植物对应不同的适合的肥料k,如果植物被撒上不适合的肥料就会死掉.然后题目将每个点适合的肥料种类( ...
- 【poj2155】Matrix(二维树状数组区间更新+单点查询)
Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the ...
- hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- POJ 2155 Matrix(二维树状数组+区间更新单点求和)
题意:给你一个n*n的全0矩阵,每次有两个操作: C x1 y1 x2 y2:将(x1,y1)到(x2,y2)的矩阵全部值求反 Q x y:求出(x,y)位置的值 树状数组标准是求单点更新区间求和,但 ...
- HDU 4031 Attack(线段树/树状数组区间更新单点查询+暴力)
Attack Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) Total Sub ...
- NBOJv2 1050 Just Go(线段树/树状数组区间更新单点查询)
Problem 1050: Just Go Time Limits: 3000 MS Memory Limits: 65536 KB 64-bit interger IO format: % ...
- poj_3468: A Simple Problem with Integers (树状数组区间更新)
题目是对一个数组,支持两种操作 操作C:对下标从a到b的每个元素,值增加c: 操作Q:对求下标从a到b的元素值之和. 这道题也可以用线段树解,本文不做描述,下面分析如何用树状数组来解决这道题. 先把问 ...
- POJ 3468 A Simple Problem with Integers(树状数组区间更新) 续
这个题刚开始的时候是套模板的,并没有真的理解什么树状数组的区间更新,这几天想了一下,下面是总结: 区间更新这里引进了一个数组delta数组,delta[i]表示区间 [i, n] 的共同增量,每次你需 ...
- POJ 3468 A Simple Problem with Integers(树状数组区间更新)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 97217 ...
随机推荐
- vue 中使用keepAlive状态保持
keepAlive状态保持 1 主要实现原理,状态保持的路由不会执行生命周期的钩子函数,只有第一次进入页面会执行钩子函数. 2 设置当前页面保持keepAlive 直接在路由meta中配置即可 m ...
- nodejs 数字字节转换操作
function number2Bytes(i) { var arr = new Int32Array(1); arr[0] = 0; var buf = Buffer.from(arr.buffer ...
- 05. pt-diskstats
pt-diskstats --devices-regex=sda --interval=1 --iterations=3 --show-timestamps #ts device rd_s rd_av ...
- django DEBUG=False
在django的settings中. 将DEBUG 设置为False. 会出现 #python manage.py runserver 8888 CommandError: You must set ...
- Spring PropertyResolver 占位符解析(二)源码分析
Spring PropertyResolver 占位符解析(二)源码分析 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) ...
- IOS初级:UITableView
先来看一下tableview 的结构(plain style). -------------------------------------- + header ...
- EditText输入小数
edtValue.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
- iOS11 适配
参考:http://kisscu.com/2018/07/01/%E9%80%82%E9%85%8Dios-11%E6%80%BB%E7%BB%93/ self.navigationItem.righ ...
- 旅行家的预算(NOIP1999&水题测试2017082301)
题目链接:旅行家的预算 这题还可以,不算太水. 这题贪心即可. 我们采取如下动作: 如果在装满油的情况下能到达的范围内,没有加油站,则无解. 如果在装满油的情况下能到达的范围内,油价最低的加油站的油价 ...
- unity3DGI
Realtime GI,实时全局光照, 1.构成 : 可实时更新的lightmap + 可实时更新的光照探头(light probe)+ 可实时更新的cubemap(Reflection probe) ...