zoukankan      html  css  js  c++  java
  • LuoguP2066机器分配

    总公司拥有高效设备M台,准备分给下属的N个分公司。各分公司若获得这些设备,可以为国家提供一定的盈利。问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值和分配方案。其中M≤15,N≤10。分配原则:每个公司有权获得任意数目的设备,但总台数不超过设备数M。
    dp[i][j] := 前i个公司分配j台机器的最大收益

    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <queue>
    #include <vector>
    #define N 100 
    using namespace std;
    int dp[N][N],v[N][N],n,m,ans;
    void dfs(int i,int j){
        if(i == 0) return;
        for(int k = 0;k <= j;++k){
            if(ans == dp[i-1][k] + v[i][j-k]){
                ans = dp[i-1][k];
                dfs(i-1,k);
                printf("%d %d
    ",i,j-k);
                return;
            }
        }
    }
    void solve(){
        for(int i = 1;i <= n;++i){
            for(int j = 1;j <= m;++j){
                ans = 0;
                for(int k = 0;k <= j;++k){
                    if(ans < dp[i-1][k] + v[i][j-k]){
                        ans = dp[i-1][k] + v[i][j-k];
                    }
                }
                dp[i][j] = ans;
            }
        }
        printf("%d
    ",dp[n][m]);
        dfs(n,m);
    }
    int main()
    {
        scanf("%d %d",&n,&m);
        for(int i = 1;i <= n;++i){
            for(int j = 1;j <= m;++j){
                scanf("%d",&v[i][j]);	
            }
        }
        solve();
        return 0;
    }
    
    岂能尽如人意,但求无愧我心
  • 相关阅读:
    正则表达式语法
    javascript刷新页面方法
    数据表操作Sql语句
    UML中的关系讲解
    ASP.net和C#的MD5加密
    Excel导入数据库,兼容Excel2003,2007
    EXCEL文件导入数据库
    javascript 控制文本框输入格式
    键盘扫描码
    jquery在不同浏览器下的兼容性问题
  • 原文地址:https://www.cnblogs.com/Zforw/p/10543277.html
Copyright © 2011-2022 走看看