USACO 2002 Feb CowCycling

来源:互联网 发布:点位图软件 brd 编辑:程序博客网 时间:2024/04/30 19:16
定义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("%d\n",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);                    }}


0 0
原创粉丝点击