小学生又双叒叕来写题解啦!
这题的翻译貌似不完整。
所谓怪兽与英雄的对决,就是双方同时扣同样的血,直到一方为零。
弄懂题后,你会发现,这题不是考贪心,而是模拟。
写一个函数用于模拟怪兽与英雄的对决。
再遍历所有英雄,对攻击范围内的怪物进行对决。
累加一下总伤害即可。
送上满分代码:
#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
标签:tx,ty,int,题解,sum,对决,AT4891 From: https://www.cnblogs.com/liangbowen/p/16622787.html