哈理工OJ- 1161 - Leyni【树状数组】
2018-02-21 19:47
295 查看
HRBUST - 1161 - Leyni【树状数组】
Leyni被人掳走,身在水深火热之中…
小奈叶为了拯救Leyni,独自一人前往森林深处从静竹手中夺回昏迷中的Leyni。
历经千辛万苦,小奈叶救出了Leyni,但是静竹为此极为恼怒,决定对他们发起最强烈的进攻。
不过小奈叶有一个叫做能量保护圈的道具,可以保护他们。
这个保护圈由n个小的小护盾围成一圈,从1到n编号。当某一块小护盾受到攻击的时候,小护盾就会抵消掉这次攻击,也就是说对这一块小护盾的攻击是无效攻击,从而保护圈里的人,不过小护盾在遭到一次攻击后,需要t秒进行冷却,在冷却期间受到的攻击都是有效攻击,此时他们就会遭到攻击, 即假设1秒时受到攻击并成功防御,到1+t秒时冷却才结束并能进行防御,在2到t受到的都是有效攻击。
现在小奈叶专心战斗,Leyni昏迷,他们无法得知小护盾遭受的有效攻击次数,他们需要你的帮助。
只要能帮到他们,Leyni就会赠送出一份小奈叶写真集。
Input
第一行是一个整数T,表示有多少组测试数据。
第一行是三个整数,n,q,t,n表示保护圈的长度,q表示攻击的询问的总次数,t表示能量盾的冷却时间。
接下来的q行,每行表示受到的攻击或者她询问某范围内的能量盾被攻击的次数。
攻击:
Attack a
表示编号为a的小护盾受到一次攻击, 保证 1 <= a <= n
询问:
Query a b
表示询问编号从a到b的小护盾(包括a和b)总共受到了多少次有效攻击。保证 1<=a,b<=n
第k次攻击发生在第k秒,询问不花费时间。
1 <= n,q <=100000
1 <= t <= 50。
Output
每一组测试数据,先输出一行”Case i:”,i表示第i组测试数据,从1开始计数。
之后对于每一个询问,输出该范围内的小护盾受到的有效攻击次数,一个询问一行。
Sample Input
1
4 7 3
Attack 1
Attack 1
Attack 1
Attack 2
Attack 2
Query 1 4
Query 1 1
Sample Output
Case 1:
3
2
Leyni被人掳走,身在水深火热之中…
小奈叶为了拯救Leyni,独自一人前往森林深处从静竹手中夺回昏迷中的Leyni。
历经千辛万苦,小奈叶救出了Leyni,但是静竹为此极为恼怒,决定对他们发起最强烈的进攻。
不过小奈叶有一个叫做能量保护圈的道具,可以保护他们。
这个保护圈由n个小的小护盾围成一圈,从1到n编号。当某一块小护盾受到攻击的时候,小护盾就会抵消掉这次攻击,也就是说对这一块小护盾的攻击是无效攻击,从而保护圈里的人,不过小护盾在遭到一次攻击后,需要t秒进行冷却,在冷却期间受到的攻击都是有效攻击,此时他们就会遭到攻击, 即假设1秒时受到攻击并成功防御,到1+t秒时冷却才结束并能进行防御,在2到t受到的都是有效攻击。
现在小奈叶专心战斗,Leyni昏迷,他们无法得知小护盾遭受的有效攻击次数,他们需要你的帮助。
只要能帮到他们,Leyni就会赠送出一份小奈叶写真集。
Input
第一行是一个整数T,表示有多少组测试数据。
第一行是三个整数,n,q,t,n表示保护圈的长度,q表示攻击的询问的总次数,t表示能量盾的冷却时间。
接下来的q行,每行表示受到的攻击或者她询问某范围内的能量盾被攻击的次数。
攻击:
Attack a
表示编号为a的小护盾受到一次攻击, 保证 1 <= a <= n
询问:
Query a b
表示询问编号从a到b的小护盾(包括a和b)总共受到了多少次有效攻击。保证 1<=a,b<=n
第k次攻击发生在第k秒,询问不花费时间。
1 <= n,q <=100000
1 <= t <= 50。
Output
每一组测试数据,先输出一行”Case i:”,i表示第i组测试数据,从1开始计数。
之后对于每一个询问,输出该范围内的小护盾受到的有效攻击次数,一个询问一行。
Sample Input
1
4 7 3
Attack 1
Attack 1
Attack 1
Attack 2
Attack 2
Query 1 4
Query 1 1
Sample Output
Case 1:
3
2
#include<bits/stdc++.h> using namespace std; int T; int n,q,t; char s[20]; int c[100005]; int d[100005]; int Lowbit(int x) { return x&(-x); } void update(int pos,int val) { while(pos<=n) { c[pos]+=val; pos+=Lowbit(pos); } } int query(int pos) { int res=0; while(pos>0) { res+=c[pos]; pos-=Lowbit(pos); } return res; } int main() { scanf("%d",&T); for(int k=1; k<=T; k++) { scanf("%d%d%d",&n,&q,&t); memset(c,0,sizeof(c)); memset(d,0,sizeof(d)); int attack=0; printf("Case %d:\n",k); while(q--) { scanf("%s",s); if(s[0]=='A') { attack++; int x; scanf("%d",&x); if(d[x]==0)//第一次被攻击 { d[x]=attack; } else { if(d[x]+t<=attack) { d[x]=attack; } else update(x,1); } } int l,r; if(s[0]=='Q') { scanf("%d%d",&l,&r); printf("%d\n",query(r)-query(l-1)); } } } return 0; }
相关文章推荐
- 哈理工OJ 1161 Leyni(线段树)
- hrbust 2046 哈理工oj 2046 最后的题目八个字【二维树状数组】
- HLG 1161 Leyni【树状数组】
- 哈理工OJ 1400 汽车比赛【树状数组过】
- 哈理工 oj 1161 Leyni
- [ACM] hrbustoj 1161 Leyni (树状数组)
- hrbust 2132 哈理工oj 2132 数方格【二维树状数组】
- [ACM] hrbustoj 1161 Leyni (树状数组)
- hrbust/哈理工oj 1867 小伙伴的数据结构【树状数组】
- 哈理工oj 1390-Leyni, LOLI and Numbers解题报告
- 树状数组 OJ题目大汇总----czyuan原创
- hrbust 哈理工oj 1360 Leyni的国家III【多路径并查集】
- 哈理工OJ-1326-Leyni的国家
- ACdreamoj 1011(树状数组维护字符串hash前缀和)
- 哈理工oj 1392-Leyni, LOLI and Houses解题报告
- 南阳oj 123 树状数组入门 区间更新 单点求值
- 树状数组初学(3)——杭电OJ 1541 Stars
- Hrbust 1390 Leyni, LOLI and Numbers【思维+树状数组+二分+双向链表模拟】好题!好题!好题!
- 哈理工oj 1407-Leyni的游戏二分图的最大权匹配
- ACdreamoj 1011(树状数组维护字符串hash前缀和)