心之钢
错误原因 每一次技能使用 都应该及时类型转换 不能全部相加再转 不然可能小数部分会进位到整数
#include<bits/stdc++.h>
using namespace std;
queue<int> t[6];
int main()
{
double H1,H2;
bool buy=0;
int op,min,s,mis,idx;
scanf("%lf%lf%d",&H1,&H2,&op);
float blood=H1;
while(op--)
{
scanf("%d:%d %d",&min,&s,&mis);
if(mis==1)
buy=1,blood+=800;
if(mis==2)
blood+=H2;
if(mis==3)
{
scanf("%d",&idx);
if(buy)
{
t[idx].push(min*60+s);
if(t[idx].size()>1&&(t[idx].back()-t[idx].front())>=30||t[idx].size()==1)
{
blood+=(int)((125.0+blood*0.06)*0.1);
while(t[idx].size()!=1) t[idx].pop();
}
}
}
}
printf("%d",(int)blood);
return 0;
}