小鑫杀怪兽(OJ--3298
来源:互联网 发布:淘宝客服如何应对客户 编辑:程序博客网 时间:2024/04/29 17:08
题目描述
塔防游戏 是一类很出名的游戏,在游戏里,你需要建造一些防御塔来攻击怪兽从而保卫小鑫国王。现在又有一波怪兽
来袭了,你需要知道小鑫国王能否顶住怪兽的攻击。
怪兽所走的路是一条直线,这条直线上有N个格子(连续编号从1到N)。在怪兽敌人赶来之前,你需要建造M个防御
塔。每个防御塔的攻击范围是[L, R],意味着这个防御塔可以攻击从L到R之间所有的敌人。当某个怪兽待在第i个位置
时,每一个能攻击到第i个位置的防御塔都会对这个怪兽进行一次攻击,怪兽在进行下一次移动之前不会再受到同一个
防御塔的攻击。举个例子,一个防御塔的攻击范围是[1, 3],一个怪兽会在第1个格子、第2个格子、第3个格子分别受
到1次攻击。
一个邪恶的女巫会帮助所有的怪物安置初始位置(第i个怪兽出现在格子Xi)。所有的怪兽都沿直线行动(沿着从1到N
的方向)。
现在你知道每个怪兽的血量Hi 以及每个防御塔的伤害值Di ,(一次攻击会对怪兽造成Di点伤害,怪兽的血量会下
降Di)。如果一个怪兽的血量Hi降低到0或者0以下,这个怪兽就会被打死然后消失。
你的任务是计算最经过所有的防御塔攻击,会留下多少的怪兽。
输入
每组的第一行是一个整数N (0 < N <= 100000),代表路上一共有N个格子。第二行是一个整数M (0 < M <= 100000),代
表小鑫拥有的防御塔的数量。接下来M行,每行包含三个整数Li, Ri, Di (1 <= Li <= Ri <= N, 0 < Di <= 1000),代表防御
塔的攻击范围[L, R]以及防御塔的伤害值。接下来一个整数K (0 < K <= 100000),代表怪兽的数量。接下来K行,每行
有两个整数Hi 和 Xi (0 < Hi <= 10^18, 1 <= Xi <= N),代表怪兽的血量以及怪兽的起始位置。
当N = 0时输入结束。
输出
思路:用一个数组num[]去储存当前点到终点总共所要受到的伤害值。
示例输入
521 3 15 5 251 33 15 27 39 10
示例输出
3
提示
在样例中,初始血量为5、7和9的三个怪兽最后还存活着。
<span style="font-size:18px;">#include <cstdio>#include <algorithm>#include <cstring>#define ll long longusing namespace std;ll num[120000];int main(){ ll n,m,l,r,d,k,h,x; while(~scanf("%lld",&n)&&n) { memset(num,0,sizeof(num)); scanf("%lld",&m); for(int i=0; i<m; i++) { scanf("%lld %lld %lld",&l,&r,&d); num[r]+=d; //如果是在这个循环内再循环一边区间的话肯定会超时,所以只需记录下右边界和左边界,到时候直接分别遍历两边即可求出数组num[] num[l-1]-=d; } for(int i=n-1; i>=0; i--) //遍历一边求出当前位置所能受到的伤害值 num[i]+=num[i+1]; for(int i=n-1; i>=0; i--) //遍历第二遍求出当前位置到终点总共所受到的伤害值 num[i]+=num[i+1];// for(int i=1;i<=n;i++)// printf("%d ",num[i]);// printf("\n"); ll ans=0; scanf("%lld",&k); for(int i=0; i<k; i++) { scanf("%lld %lld",&h,&x); if(h>num[x]) ans++; } printf("%lld\n",ans); } return 0;}</span>
- 小鑫杀怪兽(OJ--3298
- 小鑫杀怪兽
- 小鑫杀怪兽
- SDUT3298 小鑫杀怪兽 滚动数组 防TLE
- 打怪兽
- 打怪兽
- 奥特曼打小怪兽(小怪兽)
- J2EE,你这个怪兽!
- 大怪兽社区
- 大战怪兽~离散老师
- 怪兽与超人
- 打怪兽问题
- 击杀怪兽
- 奥特曼打小怪兽
- 奥特曼-小怪兽
- [51NOD1670] 打怪兽
- 1670 打怪兽
- 51nod1670 打怪兽
- 线程池的简单Demo
- NGUI_2.6.3_系列教程六(序列帧动画)
- java导入导出excel表格
- HTML简单广告轮播器
- js 验证身份证格式
- 小鑫杀怪兽(OJ--3298
- 机器学习算法-梯度树提升GTB(GBRT)
- Hibernate分页(sql和hql)两种方法
- iOS中ScrollView的属性和方法详解
- 少一点伤感
- Android:透明状态栏的效果实现
- Android DownloadManager 的使用及断点续传
- NSString转NSData,以及char*转NSData
- 关于线程的面试题