原题链接:
http://210.44.14.31/problem/show/1091
思路:
记录两个变量:
1.一直在跑的距离
2.一直在闪烁的距离
当闪烁快时,把跑的距离重新赋值为闪烁的距离。
每一秒判断是否逃离岛。
此做法认真思考下,还是比较好理解的。
代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int M, S, T;
int ans;
bool solve()
{
int runDis = 0;//记录跑的距离
int magicDis = 0;//记录闪烁的距离
int i;
for (i = 1; i <= T; i++)
{
if (M >= 10)
{
magicDis += 60;
M -= 10;
}
else
{
M += 4;
}
if (runDis + 17<magicDis)
{
runDis = magicDis;
}
else
{
runDis += 17;
}
if (runDis >= S)
{
ans = i;
return true;
}
}
ans = max(runDis, magicDis);
return false;
}
int main()
{
cin >> M >> S >> T;
if (solve())
cout << "Yes" << endl;
else
cout << "No" << endl;
cout << ans << endl;
return 0;
}