洛谷1095 守望者的逃离 贪心 dp

题目链接 点击打开链接
题解:

先只用魔法跑一遍,然后再循环一遍用跑步优化,一开始实在想不出怎么优化,其实情况很明白,离终点很远的时候肯定是一直闪现,离得近的时候可能与其闪现休息,跑步更快。但是实际写的时候很麻烦……因为还得记录魔法的消耗。后来干脆弄一个一直跑的人,每次都和一直闪的人比……

#include <iostream>
#include<cstdio>
using namespace std;
long long  f[300005];
int main()
{
	int m,s,t,i;
	scanf("%d%d%d",&m,&s,&t);
	for(i=1;i<=t;i++){
		if(m>=10){
			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",i);return 0;}
	}
	printf("No\n%d",f[t]);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/nwpu2017300135/article/details/79824891
今日推荐