首页 > 其他 > 详细

4.30 每日一题题解

时间:2020-04-30 11:34:50      阅读:50      评论:0      收藏:0      [点我收藏+]

CSL分苹果

涉及知识点:

  • 01背包

solution:

  • \(题意非常简单,做法也非常简单\)
  • \(一道裸的01背包问题\)
  • \(01背包的简单理解:\)
  • \(给定n种物品和一个容量为w的背包,物品i的重量是wi,其价值为vi\)
  • \(应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?\)
  • \(那么本题,设W = 所有苹果的重量之和,假定一个大小为\frac{W}{2}的背包\)
  • \(问题简化成往大小为\frac{W}{2}的背包塞苹果,使得总重量最大\)

std:

#include <bits/stdc++.h>
using namespace std;
#define ll long long 
const int maxn = 10005;
int dp[maxn],w[maxn];
int main(){
    int n,cnt = 0;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>w[i] , cnt += w[i];
    for(int i=1;i<=n;i++){
        for(int j=cnt/2;j>=w[i];j--){
            dp[j] = max(dp[j] , dp[j - w[i]] + w[i]);
        }
    }
    cout<<dp[cnt/2]<<" "<<cnt - dp[cnt/2]<<endl;
    return 0;
}

4.30 每日一题题解

原文:https://www.cnblogs.com/QFNU-ACM/p/12807124.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!