Steel of Heart

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

XPL 是一名老年大乱斗玩家。最近新赛季推出了一件能够让英雄无限叠加生命值的新装备------心之钢\textbf{心之钢}心之钢。对于变大变肉有着谜之执念的 XPLXPLXPL 当然义无反顾地加入了钢门。

这天,XPLXPLXPL 兴奋地对室友说自己刚玩了一把''爽局'',室友好奇 XPLXPLXPL 的英雄最终拥有多少生命值,粗心的 XPLXPLXPL 却说他已经忘了。好在室友从他的游戏文件中找到了那一局的对局日志、英雄的初始生命值 H1H_1H1​ 和成长生命值 H2H_2H2​,所以我们可以借助这些信息计算出 XPLXPLXPL 那一局最终的生命值,但是室友太菜了,所以向你寻求帮助,你可以告诉他答案吗?
 

一篇对局日志包含了 mmm 个事件,且保证只会出现以下三种事件:

  1. mm:ss 1\textbf{mm:ss 1}mm:ss 1,表示英雄在 mmmmmm 分 ssssss 秒购买了心之钢,同时获得了心之钢的属性与被动技能。
    • 获得 800800800 生命值。
    • 被动-庞然吞食:对敌方英雄的攻击会造成 125+6%125+6\%125+6% 施法者当前生命值的伤害,并为你提供相当于10%该伤害(向下取整)的生命值。该技能有30秒冷却时间,且对于每个敌方英雄的冷却时间相互独立举个例子,你于 000000 分 010101 秒对敌方英雄 xxx 触发了心之钢,这个效果便在 000000 分 020202 秒 --- 000000 分 303030 秒对于敌方英雄 xxx 处于冷却时间,同时不影响你对其余敌方英雄触发心之钢,直到 000000 分 313131 秒可再次对 xxx 触发。
  2. mm:ss 2\textbf{mm:ss 2}mm:ss 2,表示英雄在 mmmmmm 分 ssssss 秒升了一级,同时获得了固定的成长生命值 H2H_2H2​。举个例子,若英雄的当前生命值为 114511451145 点,成长生命值为 141414 点,升级后的生命值就是 1145+14=11591145 + 14 = 11591145+14=1159 点 。
  3. mm:ss 3 x\textbf{mm:ss 3 x}mm:ss 3 x,表示英雄在 mmmmmm 分 ssssss 秒攻击了第 xxx 个敌方英雄。保证只存在5个敌方英雄,即 1≤x≤51\le x\le 51≤x≤5。

输入描述:

第一行输入三个整数 H1 (500≤H1≤1000)H_1\ (500\le H_1\le 1000)H1​ (500≤H1​≤1000) --- 初始生命值,H2 (1≤H2≤100)H_2\ (1\le H_2\le 100)H2​ (1≤H2​≤100) --- 成长生命值,m (0≤m≤1000)m\ (0\le m\le 1000)m (0≤m≤1000) --- 事件的个数。

接下来 mmm 行,第 iii 行输入一个字符串 mm:ss (00:00≤mm:ss≤60:00)mm:ss\ (00:00\le mm:ss\le 60:00)mm:ss (00:00≤mm:ss≤60:00) --- 时间线(保证分钟和秒钟都以两位整数的形式给出),一个整数 type (1≤type≤3)type\ (1\le type\le 3)type (1≤type≤3) --- 事件类型,若 type = 3type\ =\  3type = 3 则再输入一个整数 x (1≤x≤5)x\ (1\le x\le 5)x (1≤x≤5) --- 敌方英雄编号。

输入保证事件1只会出现至多一次,事件按时间顺序给出,且每秒只会发生一个事件。\textbf{输入保证事件1只会出现至多一次,事件按时间顺序给出,且每秒只会发生一个事件。}输入保证事件1只会出现至多一次,事件按时间顺序给出,且每秒只会发生一个事件。

输出描述:

输出一个整数,表示对局最终英雄的生命值。

样例输入1

500 10 3
11:45 2
14:19 2
19:18 3 1

输出1

520

样例输入2

1000 100 7
00:00 2
00:30 3 1
01:00 1
01:30 2
01:40 3 1
01:45 3 2
01:50 3 1

样例输出2

2048

这道题正常写的话思路很顺的,而且也比较容易写出来,但是在判断的时候是有一个坑的。就是刚买完装备第一次使用的时候是没有冷却的可以直接使用。所以只要特判一下是不是第一次就OK了 

/**
*  ┏┓   ┏┓+ +
* ┏┛┻━━━┛┻┓ + +
* ┃       ┃
* ┃   ━   ┃ ++ + + +
*  ████━████+
*  ◥██◤ ◥██◤ +
* ┃   ┻   ┃
* ┃       ┃ + +
* ┗━┓   ┏━┛
*   ┃   ┃ + + + +Code is far away from  
*   ┃   ┃ + bug with the animal protecting
*   ┃    ┗━━━┓ 神兽保佑,代码无bug 
*   ┃       ┣┓
*    ┃        ┏┛
*     ┗┓┓┏━┳┓┏┛ + + + +
*    ┃┫┫ ┃┫┫
*    ┗┻┛ ┗┻┛+ + + +
*/
#include<iostream>
using namespace std;
int a[6];
int b[6];
int main() {
	int pl = 0;
	long long x, y, z;
	cin >> x >> y >> z;
	while (z--) {
		int d, e;
		scanf("%d:%d", &d, &e);
		int t;
		cin >> t;
		if (t == 1) {
			x += 800;
			pl = 1;
		} else if (t == 2) {
			x += y;
		} else if (t == 3 && pl == 0) {
			int l;
			cin >> l;
		} else if (t == 3 && pl == 1) {
			int l;
			cin >> l;
			if (((d - a[l]) * 60 + (e - b[l]) >= 30) || (a[l] == 0 && b[l] == 0)) {
				a[l] = d;
				b[l] = e;
				x = x + (125 + 0.06 * x) * 0.1;
			}
		}
	}
	cout << x;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值