AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 校园
  • 应用
  • 文章
    • 题解
    • 分享
    • 问答
  • 吐槽
  • 登录/注册

AcWing 487. 金明的预算方案

作者: 作者的头像   ღSupperღ ,  2022-06-22 16:42:13 ,  所有人可见 ,  阅读 4


0


#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
#define v first
#define w second
#define pb push_back
typedef pair<int, int> PII;
const int N = 60, M = 32010;
int n, m;
PII master[N];
vector<PII> servent[N];
int f[M];

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> m >> n;
    for(int i = 1; i <= n; i ++ )
    {
        int v,p,q;
        cin >> v >> p >> q;
        p *= v;
        if(!q) master[i] = {v,p};
        else servent[q].pb({v,p});
    }
    for(int i = 1; i <= n; i ++ )
    {
        for(int u = m; u >= 0; u -- )
        {
            for(int j = 0; j < 1 << servent[i].size(); j ++ )
            {
                int v = master[i].v, w = master[i].w;
                for(int k = 0; k < servent[i].size(); k ++ )
                    if(j >> k & 1)
                    {
                        v += servent[i][k].v;
                        w += servent[i][k].w;
                    }
                if(u >= v) f[u] = max(f[u],f[u - v] + w);
            }
        }
    }
    cout << f[m] << "\n";
    return 0;  
}

0 评论

你确定删除吗?

© 2018-2022 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息