一个小问题
查看原帖
一个小问题
629377
iamajcer楼主2024/11/19 13:28
#include <bits/stdc++.h>
using namespace std;
const int N=3e5+5, M=1e3+5; 

int m, s, t, f[N][M], ans=0;
int main()
{
	scanf("%d%d%d", &m, &s, &t);
	for (int i=1; i<=t; i++)
	{
		for (int j=1; j<=m; j++)
		{
			f[i][j]=max(f[i][j], f[i-1][j]+17);
			if (j>=10) f[i][j]=max(f[i][j], f[i-1][j-10]+60);
			f[i][j]=max(f[i][j], f[i-1][j+4]); //这里为什么是 j+4 而不是 j-4
			
			if (f[i][j]>=s) 
			{
				printf("Yes\n%d", i);
				return 0;
			}
		}
	}
	
	for (int i=1; i<=m; i++) ans=max(ans, f[t][i]);
	
	printf("No\n%d", ans);
	return 0;
} 
2024/11/19 13:28
加载中...