洛谷P5006题解
本文同步更新于洛谷博客
题目描述
你在一张地图上移动,用 来表示左/右/上/下,当前格子上的字母代表着你要进行相应的操作。
R
:
Q
:
Y
:
M
:
(具体题意还是建议看原题)
题解
我们可以将角色和怪物的属性用结构体存起来,然后记录下角色的位置,每次进行相应的操作即可。
注意
- 上文中的 为赋值符号。
- 使用函数
ceil
最好转成double
类型再使用。 - 对于这种阅读理解题一定要先读清题意和题目要求才去打代码。
Code
#include<bits/stdc++.h>
using namespace std;
struct node
{
int hp,st,de;
}a,b;
int n,m,t,x,y,op,d,p,q;
int dx[]={0,0,0,-1,1},dy[]={0,-1,1,0,0};
char s[105][105];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("\n%s",s[i]+1);
scanf("%d%d%d%d%d%d%d%d",&a.hp,&a.st,&a.de,&x,&y,&b.st,&b.de,&t);
while(t--)
{
scanf("%d",&op);
if(op&1)
printf("%d %d %d\n",b.hp,b.st,b.de);
else
{
scanf("%d",&d);
x+=dx[d],y+=dy[d];
if(s[x][y]=='R')
b.hp=max(0,b.hp-10);
else if(s[x][y]=='Q')
b.st+=5;
else if(s[x][y]=='Y')
b.de+=5;
else if(s[x][y]=='M')
{
p=ceil(double(a.hp/max(1.0,double(b.st-a.de))));
q=max(1,a.st-b.de);
b.hp+=max(1,p*q);
}
}
}
return 0;
}
本文作者:Ginger_he
本文链接:https://www.cnblogs.com/Gingerhe/p/16009982.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步