炉石传说
程序员文章站
2022-07-12 20:53:26
...
题意介绍
题意分析
模拟题,模拟每一种操作后两个英雄及其随从的生命值。最后判断两个英雄的生命值对应输出即可。
通过代码
#include<bits/stdc++.h>
using namespace std;
struct S
{
int t, h;
};
S s[2][10];
int main()
{
s[0][0].h = 30;
s[1][0].h = 30;
int n, a, b, d;
int cnt;
char c[20];
scanf("%d", &n);
S temp;
int flag = 0;
while (n--)
{
scanf("%s", c);
if (strcmp(c, "summon") == 0)
{
scanf("%d %d %d", &a, &b, &d);
temp.t = b, temp.h = d;
for (int i = 6; i >= a; i--)
{
s[flag % 2][i + 1] = s[flag % 2][i];
}
s[flag % 2][a] = temp;
}
if (strcmp(c, "attack") == 0)
{
scanf("%d %d", &a, &b);
S t1 = s[flag % 2][a];
S t2 = s[(flag + 1) % 2][b];
s[flag % 2][a].h -= t2.t;
if (s[flag % 2][a].h <= 0)
{
for (int i = a; i <= 6; i++)
s[flag % 2][i] = s[flag % 2][i + 1];
}
s[(flag + 1) % 2][b].h -= t1.t;
if (s[(flag + 1) % 2][b].h <= 0 && b != 0)
{
for (int i = b; i <= 6; i++)
s[(flag + 1) % 2][i] = s[(flag + 1) % 2][i + 1];
}
}
if (strcmp(c, "end") == 0)
flag++;
}
cnt = 0;
if (s[0][0].h <= 0)
printf("-1\n");
else if (s[1][0].h <= 0)
printf("1\n");
else printf("0\n");
printf("%d\n", s[0][0].h);
for (int i = 1; i <= 7; i++)
{
if (s[0][i].h > 0)
cnt++;
}
printf("%d ", cnt);
for (int i = 1; i <= cnt; i++)
printf("%d ", s[0][i].h);
printf("\n");
cnt = 0;
printf("%d\n", s[1][0].h);
for (int i = 1; i <= 7; i++)
if (s[1][i].h > 0)
cnt++;
printf("%d ", cnt);
for (int i = 1; i <= cnt; i++)
printf("%d ", s[1][i].h);
}
上一篇: opencv3 人脸检测和识别
下一篇: 【炉石传说】