01二维背包——poj2576
/*
要求把a数组分成两个集合,两个集合人数最多差1,并且元素之和的差尽可能小
那只要把所有可行的列出来即可 01二维背包,即体积是个二维数据,那么我们的背包状态也应该设为二维
dp[j][k]设为 有j个人,体积为k的状态是否可行
第一维上限是人数的一般,第二维上限是元素总和的一半
*/
#include<iostream>
#include<cstring>
#include<cstdio> using namespace std;
int n,a[];
bool dp[][*]; int main(){
while(cin>>n){
int sum=;
for(int i=;i<=n;i++)cin>>a[i],sum+=a[i];
memset(dp,,sizeof dp); int W1=(n+)/,W2=sum/;dp[][]=;
for(int i=;i<=n;i++)
for(int j=W1;j>=;j--)
for(int k=W2;k>=a[i];k--)
dp[j][k]|=dp[j-][k-a[i]]; int ans=;
for(int k=;k<=W2;k++)
if(dp[W1][k])ans=max(ans,k);
if(n%)
for(int k=;k<=W2;k++)
if(dp[W1-][k])ans=max(ans,k);
cout<<ans<<" "<<sum-ans<<'\n';
}
}
01二维背包——poj2576的更多相关文章
- dp之二维背包poj2576
题意:有一群sb要拔河,把这群sb分为两拨,两拨sb数只差不能大于1,输出这两拨人的体重,小的在前面...... 思路:把总人数除2,总重量除2,之后你会发现就是个简单的二维背包,有两个限制..... ...
- poj1015 01二维背包
/* 给定辩控双方给每个人的打分p[i],d[i], dp[j][k]表示前i个人有j个被选定,选定的人的辩控双方打分差之和是k,此状态下的最大辩控双方和 按01背包做,体积一维是1,体积二维是辩控双 ...
- 01二维背包+bitset优化——hdu5890
口胡一种别的解法: 三重退背包,g1[j]k]表示不选x的选了j件物品,体积为k的方案数,g[0][0] = 1 , g1[j][k]=dp[j][k]-g1[j-1][k-a[x]] 然后按这样再退 ...
- HDU 2159 FATE (二维背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 解题报告:这题实际上是一个二维的背包问题,也可以由01背包扩展而来,01背包用一维数组,可想而知 ...
- NOI 4978 宠物小精灵之收服(二维背包)
http://noi.openjudge.cn/ch0206/4978/ 描述 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物 ...
- 二维背包---P1855 榨取kkksc03
P1855 榨取kkksc03 题解 二维背包板子题 f[ i ][ j ] 前 n 个物品,花费金钱不超过 i ,花费时间不超过 j 的最大价值 如果每个物品只能选一次,那么就相当于在01背包上多加 ...
- 二维背包(钟神想要的)(不是DP)
[问题描述] 背包是个好东西,希望我也有.给你一个二维的背包,它的体积是? × ?.现在你有一些大小为1× 2和1×3的物品,每个物品有自己的价值.你希望往背包里面装一些物品,使得它们的价值和最大,问 ...
- hdu 4501 小明系列故事——买年货_二维背包
题目:你可以有v1元,v2代金券,v3个物品免单,现在有n个商品,商品能用纸币或者代金券购买,当然你可以买v3个商品免费.问怎么最大能买多少价值 题意: 思路二维背包,dp[v1][v2][v3]=M ...
- rqnoj-329-刘翔!加油!-二维背包
注意排除干扰项. 因为价值不会相等,所以价值的多少与本题没有任何关系,. 所以价值为干扰项,所以不用考虑. 二维背包,简单求解. #include<stdio.h> #include< ...
随机推荐
- js 实现弹出层效果
代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...
- KeepLived + nginx 高可用
. 环境准备 1. VMware; 2. 4台CentOs7虚拟主机:192.168.122.217, 192.168.122.165 3. 系统服务:LVS, Keepalived 4. Web服务 ...
- 管理mysql
要管理MySQL,可以使用可视化图形界面MySQL Workbench. MySQL Workbench可以用可视化的方式查询.创建和修改数据库表,但是,归根到底,MySQL Workbench是一个 ...
- 基础课(三)实验串入OSPF协议和HSRP协议以及HSRP外部链路跟踪
实验要求1: ,2,3,4分别是vlan10,20,30,40的网关(网关IP-192.168.X.254 /24) 对vlan10做HSRP热备 SW1做主网关,SW2做备份网关 ...
- iOS: NSTimer使用小记
目录 1. NSRunLoopCommonModes和Timer 2. NSThread和Timer 3. GCD中的Timer 返回目录 1. NSRunLoopCommonModes和Timer ...
- 排序算法(一) 插入排序及Java实现
代码实现: public void insertionSort(List<T> list, Comparator<T> comparator) { for (int i=1; ...
- svn启动服务
bin目录添加到环境变量classpathsvn --version 查看版本svnadmin create D:\\xx 创建本地中央仓库启动svn服务 cmd命令 svnserve -d -r D ...
- hibernate使用手写sql以及对结果list的处理
Session sees=simpleDAO.getSessionFactory().openSession(); String sql = "select * from fhcb_08_t ...
- TLS/SSL 协议 - ClientHello
ClientHello 在一次新的握手流程中,ClientHello消息总是第一条消息.这条消息将客户端的功能和首选项传送给服务器.客户端会在新建连接后,希望重新协商或者响应服务器发起的重新协商请求( ...
- vbs 之 wscript
https://www.jb51.net/article/20919.htm '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ...