80求优化
查看原帖
80求优化
569235
w9095楼主2023/2/11 09:41
#include <bits/stdc++.h>
using namespace std;
int m,s,t,f[300010][1010],ans=99999999,maxn=-99999999;
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]=-99999999;
	f[0][m]=0;
	for(int i=1;i<=t;i++)
	    {
	    for(int j=0;j<=m;j++)
	        {
	        	f[i][j]=max(f[i][j],f[i-1][j]+17);
	        	if(j>=4)f[i][j]=max(f[i][j],f[i-1][j-4]);
	        	if(f[i][j]>=s)ans=min(ans,i);
	        	maxn=max(maxn,f[i][j]);
			}
		for(int j=m;j>=0;j--)
		    {
		    if(j+10<=m)f[i][j]=max(f[i][j],f[i-1][j+10]+60);
		    if(f[i][j]>=s)ans=min(ans,i);
		    maxn=max(maxn,f[i][j]);
		    }
	    }
	if(ans!=99999999)printf("Yes\n%d",ans);
	else printf("No\n%d",maxn);
	return 0;
}
2023/2/11 09:41
加载中...