定义dp[i][j][k]为还剩i头牛,跑了j圈,第k分钟,此时领头牛的最大电力,然后用刷表法
dp[i][j][k]可以去转移dp[i][j+l][k+1],dp[i-1][j+l][k+1](l<=sqrt(dp[i][j][k])
然后当j+l>=s时,输出i+1就行了
#include<cstdio>
#include<cstring>
int dp[25][105][105];
void check(int &x,int y){
if(x<y)x=y;
}
int main(){
memset(dp,-1,sizeof(dp));
int n,m,s;
scanf("%d %d %d",&n,&m,&s);
dp[n][0][0]=m;
for(int i=0;i<s;i++)
for(int j=1;j<=n;j++)
for(int k=0;k<=s;k++)
if(dp[j][k][i]!=-1)
for(int l=1;l*l<=dp[j][k][i];l++){
if(k+l>=s){
printf("%dn",i+1);
return 0;
}
check(dp[j][k+l][i+1],dp[j][k][i]-l*l);
check(dp[j-1][k+l][i+1],m-k-l);
}
}
最后
以上就是阔达月光最近收集整理的关于USACO 2002 Feb CowCycling的全部内容,更多相关USACO内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复