AT4891 题解

题目传送门

小学生又双叒叕来写题解啦!

这题的翻译貌似不完整。

所谓怪兽与英雄的对决,就是双方同时扣同样的血,直到一方为零

弄懂题后,你会发现,这题不是考贪心,而是模拟。

写一个函数用于模拟怪兽与英雄的对决。

再遍历所有英雄,对攻击范围内的怪物进行对决。

累加一下总伤害即可。

送上满分代码:

#include <iostream>
#include <cstdio>
#define N 100005
using namespace std;
int a[N], b[N];
long long sum;
void PK(int &x, int &y)  //模拟怪兽与英雄的对决。 
//这里的取址符可以使参数改变。
//也就是说,不加取址符,若在函数中改变了参数的值,参数仍不变。
//而加了取址符就能改变参数的值。 
{
	int tx = x, ty = y;
	if (x > y) x -= ty, y = 0, sum += ty;	
	else if (x == y) x = 0, y = 0, sum += ty;
	else if (x < y) x = 0, y -= tx, sum += tx;
}
int main()
{
	int n;
	scanf("%d", &n);
	for (int i = 1; i <= n+1; i++) scanf("%d", &a[i]);
	for (int i = 1; i <= n; i++) scanf("%d", &b[i]);
	for (int i = 1; i <= n; i++)
	{
		PK(a[i], b[i]);
		PK(a[i+1], b[i]);
	}
	printf("%lld\n", sum);  //记得加上祖传换行。 
	return 0;
}

首发:2022-02-03 22:57:52

posted @ 2022-08-25 00:09  liangbowen  阅读(10)  评论(0编辑  收藏  举报