P1095 守望者的逃离
Posted pangbi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1095 守望者的逃离相关的知识,希望对你有一定的参考价值。
题意:给出自身能量值,给出逃离所需距离,给出逃离限制时间
给出条件:每秒17米或者消耗10点能量闪现60米
也可以选择原地不动回复4点能量值
问:假如能逃离,输出yes和最短逃离时间
假如不能逃离,输出最长逃离距离;
思路:很明显,再距离逃离点还很远的时候,我们一直用闪现就行;
因为即使算上能量消耗存储所耗时间,也比每秒17米快
所以我们不妨先dp闪现部分
再dp跑步部分(其实只有在最后快到达终点的时候才需要跑步)即可
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=3e5+10; 4 int dp[maxn]; 5 int main(){ 6 int m,s,t; 7 scanf("%d%d%d",&m,&s,&t); 8 for(int i=1;i<=t;i++){ 9 if(m>=10)dp[i]=dp[i-1]+60,m-=10; 10 else dp[i]=dp[i-1],m+=4; 11 } 12 for(int i=1;i<=t;i++){ 13 dp[i]=max(dp[i],dp[i-1]+17); 14 if(dp[i]>=s){ 15 printf("Yes %d",i); 16 return 0; 17 } 18 } 19 printf("No %d",dp[t]); 20 return 0; 21 }
以上是关于P1095 守望者的逃离的主要内容,如果未能解决你的问题,请参考以下文章