1 条题解

  • 0
    @ 2025-10-8 16:48:32

    E08【模板】背包DP 01背包

    #include<bits/stdc++.h>
    using namespace std;
    int t[110],m[110];
    int f[110][1100];
    int main()
    {
        int T,n;scanf("%d%d",&T,&n);
        for(int i=1;i<=n;i++)scanf("%d%d",&t[i],&m[i]);
        
        for(int j=0;j<=T;j++) f[0][j]=0;
        for(int i=0;i<=n;i++) f[i][0]=0;
          
        for(int i=1;i<=n;i++)
        {
           for(int j=1;j<=T;j++)
           {
                if( j<t[i])
                    f[i][j]=f[i-1][j];
                else
                    f[i][j]= max(   f[i-1][j],   f[i-1][j- t[i] ]  +  m[i] );
                 
           }
        }
          
        printf("%d\n",f[n][T]);
          
        return 0;
    }
    
    #include<bits/stdc++.h>
    using namespace std;
    int m[101],t[101];
    int f[1100];
    int main()
    {
        int n,T;scanf("%d%d",&T,&n);
        for(int i=1;i<=n;i++)scanf("%d%d",&t[i],&m[i]);
        memset(f,0,sizeof(f));
        for(int i=1;i<=n;i++)
        {
            for(int j=T;j>=t[i];j--)
            {
                f[j]=max(f[j],f[j-t[i]]+m[i]);
            }
        }
        printf("%d",f[T]);
        return 0;
    }
    
    • 1

    E08_1*【背包:价值填满型01背包】[NOIP 2005 普及组] 采药

    信息

    ID
    97
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    496
    已通过
    105
    上传者