专栏文章

题解:P1095 [NOIP2007 普及组] 守望者的逃离

P1095题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@miqhgry5
此快照首次捕获于
2025/12/04 04:52
3 个月前
此快照最后确认于
2025/12/04 04:52
3 个月前
查看原文
很显然,在魔法值大于 1010 时闪一定比跑步快,所以一开始一定要尽可能使用闪。在闪到不能继续闪后,就要尝试用等的时间来恢复魔法值。
注释在代码里面有点少
CPP
#include<bits/stdc++.h>
using namespace std;
int m,s,t,ma,dp[300005];
int main(){
	cin>>m>>s>>t; 
	for(int i=1;i<=t;i++){//dp[i]为用i秒一直闪(不跑)的最远距离 
		if(m>=10){
			dp[i]=dp[i-1]+60;
			m-=10;
		}else{
			dp[i]=dp[i-1];
			m+=4;
		}
	}
	for(int i=1;i<=t;i++){
		dp[i]=max(dp[i],dp[i-1]+17);//将第i-1秒用来跑
		ma=max(ma,dp[i]);//更新最远距离 
		if(dp[i]>s){
			printf("Yes\n%d",i);
			return 0;
		}
	}
	printf("No\n%d",ma);
	return 0;
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...