lanqiao OJ 金明的预算方案

简介: lanqiao OJ 金明的预算方案

15 届蓝桥杯14天国特冲刺营_蓝桥杯 - 蓝桥云课

分组背包问题

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#define v first 
#define w second 
 
using namespace std ; 
const int N = 2e5 +10 ;
int f[N] ;
typedef pair<int,int> PII ;
PII master[N] ;//用于记录主件,如果主件的v等于零,说明这个编号的零件不是主件 
vector<PII> s[N] ;//用于记录附件,对于编号为i的主件的附件 
int n , m ;
int main(){
  cin >> m >> n ;
  for(int i = 1 ; i <= n ;i ++){
    int a , b , c ;
    cin >> a >> b >> c ;
    if(c==0){
      master[i] = {a,a*b} ;//加入主键 
    }else {
      s[c].push_back({a,a*b}) ;//加入附件 
    }
  }
  for(int i = 1 ; i <= n ;i ++){
    if(master[i].v == 0) continue ;//如果不是主件,就直接continue; 
    else{
      for(int j = m ; j >= 0 ; j --){
        PII tmp = master[i];
        for(int k = 0 ; k < 1 << s[i].size() ; k++){
          int  v = tmp.v ; int w = tmp.w ;//如果要选附件,主件必须选 
          for(int u = 0 ; u <= s[i].size() ; u ++  ){//利用二进制的方法来求附件的选择和不选择 
            if((k>>u)&1){
              v += s[i][u].v ;
              w += s[i][u].w ;
            }
          }
          if(j >= v ) f[j] = max(f[j],f[j-v] + w) ;
        }
      }
      
      
    }
  }
  cout << f[m] << endl ;
}
目录
相关文章
|
8月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
88 0
|
8月前
【每日一题Day312】LC2240买钢笔和铅笔的方案数 | 完全背包 数学
【每日一题Day312】LC2240买钢笔和铅笔的方案数 | 完全背包 数学
65 0
|
3月前
lanqiao OJ 1024 游园安排
lanqiao OJ 1024 游园安排
25 3
|
7月前
[NOIP2002]过河卒 标准递归
[NOIP2002]过河卒 标准递归
46 6
|
7月前
|
搜索推荐 算法 C++
蓝桥杯分糖果、最小化战斗力差距、小蓝零花钱
这是一个关于算法问题的集合,包括三个不同的任务: 1. **分糖果**:肖恩有不同种类的糖果要分给学生,目标是使得到糖果字符串的字典序最大且尽量小。给定糖果种类数和一个初始字符串,输出能达到的最小字典序的最大值。 2. **最小化战斗力差距**:小蓝需要将队员分为两组,每组战斗力差距最小。给定队员数量和战斗力值,找出最小的战斗力差距。 3. **小蓝的零花钱**:小蓝要在序列中分割偶数和奇数,每次分割代价是两端元素差的绝对值。目标是在预算内确定最多能进行多少次这样的分割。 每个问题都提供了输入输出示例和相应的C++代码片段来解决这些问题。
|
8月前
|
C语言
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
|
8月前
日拱一卒,月进一步(6)(杨辉三角2)
119. 杨辉三角 II - 力扣(LeetCode)
47 0
|
8月前
【每日一题Day167】LC1000合并石头的最低成本 | 区间dp
【每日一题Day167】LC1000合并石头的最低成本 | 区间dp
60 1
【每日一题Day167】LC1000合并石头的最低成本 | 区间dp
|
8月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-927 A的B的C次方次方
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-927 A的B的C次方次方
65 0
|
8月前
蓝桥备战--纪念品分组OJ532,贪心证明
蓝桥备战--纪念品分组OJ532,贪心证明
32 0