1 条题解

  • 0
    @ 2024-11-12 9:31:31

    区间DP:

    #include<bits/stdc++.h>
    using namespace std;
    int f[101][101],graph[101][101],path[101][101][101],n,m;
    int main()
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
                cin>>graph[i][j];
        }
        memset(f,0,sizeof(f));
        for(int i=1;i<=n;i++)
            for(int j=0;j<=m;j++)    
                for(int k=0;k<=j;k++)
                {
                    if (f[i][j]<f[i-1][k]+graph[i][j-k])
                    {
                        f[i][j]=f[i-1][k]+graph[i][j-k];
                        for(int h=1;h<i;h++) path[i][j][h]=path[i-1][k][h];
                        path[i][j][i]=j-k;//因为改为了“不给”第i家公司k台机器,所以必须如此调整
                    }
                }
        cout<<f[n][m]<<endl;
        for(int i=1;i<=n;i++) cout<<i<<" "<<path[n][m][i]<<endl;
        return 0;
    }
    
    
    • 1

    信息

    ID
    744
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    6
    已通过
    0
    上传者