您的位置:首页 > 其它

[luoguP1095] 守望者的逃离(DP)

2017-06-22 14:28 232 查看

传送门

 

这题。。。。得考虑一些奇奇怪怪的复杂情况

 

不过也有简便方法。

枚举时间,先算出来只用魔法走的时间。

然后再枚举一遍时间,再算只走的时间,两个比较一下,取最游值。

代码

#include <cstdio>
#include <cstring>
#include <iostream>
#define N 3000001

int m, s, t;
int f
;

inline int read()
{
int x = 0, f = 1;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
return x * f;
}

int main()
{
int i, j;
m = read();
s = read();
t = read();
for(i = 1; i <= t; i++)
if(m > 9)
f[i] = f[i - 1] + 60, m -= 10;
else
f[i] = f[i - 1], m += 4;
for(i = 1; i <= t; i++)
{
if(f[i] < f[i - 1] + 17) f[i] = f[i - 1] + 17;
if(f[i] >= s)
{
printf("Yes\n%d\n", i);
return 0;
}
}
printf("No\n%d\n", f[t]);
return 0;
}

  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: