40pts求条(玄关)
查看原帖
40pts求条(玄关)
1350062
hujr_114514楼主2024/11/6 12:29

#5 ~ #10WA

f[i][0]记录第i秒最多能跑多少m,f[i][1]记录对应的能量值

#include<iostream>
using namespace std;
const int T=3e5+11;
int f[T][2],t,m,s;
int nl[11][2];
void init(){
	for(int i=0;i<=10;i++){
		int cnt=0;
		for(;cnt*4+i<10;cnt++);
		nl[i][0]=cnt+1,nl[i][1]=(i+cnt*4)%10;
	}
}
int main(){
	init();
	cin>>m>>s>>t;
	f[0][1]=m;
	for(int i=0;i<=t;i++){
//		printf("%d %d %d\n",i,f[i][0],f[i][1]);
		if(f[i][0]>=s){
			printf("Yes\n%d",i);
			return 0;
		}
		if(f[i][1]>=10){
			f[i + 1][0] = f[i][0] + 60;
			f[i + 1][1] = f[i][1] - 10;
		}else{
			f[i + nl[f[i][1]][0]][0] = f[i][0] + 60;
			f[i + nl[f[i][1]][0]][1] = nl[f[i][1]][1];
		}
		if(f[i+1][0]<f[i][0] + 17){
			f[i + 1][0] = f[i][0] + 17;
			f[i + 1][1] = f[i][1];
		}
	}
	printf("No\n%d",f[t][0]);
	return 0;
}
2024/11/6 12:29
加载中...