Jury Compromise POJ - 1015 dp (标答有误)背包思想
题意:从 n个人里面找到m个人 每个人有两个值 d p 满足在abs(sum(d)-sum(p)) 最小的前提下sum(d)+sum(p)最大
思路:dp[i][j] i个人中 和是 j 运用背包的思想 二维背包 i是人数容量,人数要符合背包思想,每次只插入一个,逆序枚举
j是sum(d)+sum(p)
注意:这题的标准解法有误:https://blog.csdn.net/lyy289065406/article/details/6671105 这是有误的解法
错误由 POJ dicuss 提出:

也就是说 如果 存在和1 3 5 <2 4 6 但是差值相同 但是1 3 5 6是最大的 然而这时候 dp[3][j]的路径是2 4 6的路径 就不能再选出 6来更新1 3 5 所以就会有后效性 dp不成立
正解参考:https://blog.csdn.net/glqac/article/details/22687243
正解运用了背包的思想 进行二维化 第一维表示背包人数容量 第二维表示和 这样能不重不漏把所有情况都枚举了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
const int maxn=;
int dp[][maxn],sub[],Plus[];
vector<int>path[][maxn];
int main(){
int n,m,kase=;
while(scanf("%d%d",&n,&m)==){
if(n+m==)break;
for(int i=;i<m;i++){
for(int j=;j<maxn;j++){
path[i][j].clear();
}
}
memset(dp,-,sizeof(dp));
int a,b;
for(int i=;i<n;i++){
scanf("%d%d",&a,&b);
sub[i]=a-b;
Plus[i]=a+b;
}
int fix=*m;
dp[][fix]=;
for(int k=;k<n;k++){
for(int i=m-;i>=;i--){
for(int j=;j<fix*;j++){
if(dp[i][j]>=){
if(dp[i+][j+sub[k]]<dp[i][j]+Plus[k]){
dp[i+][j+sub[k]]=dp[i][j]+Plus[k];
path[i+][j+sub[k]]=path[i][j];
path[i+][j+sub[k]].push_back(k);
}
}
}
}
}
int i;
for( i=;dp[m][fix-i]==-&&dp[m][fix+i]==-;i++);
int temp=dp[m][fix+i]>dp[m][fix-i]?i:-i;
int sumD = ( dp[m][fix+temp] + temp )/;
int sumP = ( dp[m][fix+temp] - temp )/;
//辩方总值 = (辨控和+辨控差+修正值)/2
//控方总值 = (辨控和-辨控差+修正值)/2
printf( "Jury #%d\n", kase++ );
printf( "Best jury has value %d for prosecution and value %d for defence:\n", sumD,sumP);
for( i=; i < m; i++ )
printf( " %d", path[m][fix+temp][i]+);
printf("\n\n"); }
return ;
}
Jury Compromise POJ - 1015 dp (标答有误)背包思想的更多相关文章
- POJ 1015 Jury Compromise(双塔dp)
Jury Compromise Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33737 Accepted: 9109 ...
- POJ 1051 Jury Compromise ——(暴力DP)
题目不难,暴力地dp一下就好,但是不知道我WA在哪里了,对拍了好多的数据都没找出错误= =.估计又是哪里小细节写错了QAQ..思路是用dp[i][j]表示已经选了i个,差值为j的最大和.转移的话暴力枚 ...
- 背包系列练习及总结(hud 2602 && hdu 2844 Coins && hdu 2159 && poj 1170 Shopping Offers && hdu 3092 Least common multiple && poj 1015 Jury Compromise)
作为一个oier,以及大学acm党背包是必不可少的一部分.好久没做背包类动规了.久违地练习下-.- dd__engi的背包九讲:http://love-oriented.com/pack/ 鸣谢htt ...
- POJ 1015 Jury Compromise 2个月后重做,其实这是背包题目
http://poj.org/problem?id=1015 题目大意:在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从 ...
- OpenJudge 2979 陪审团的人选 / Poj 1015 Jury Compromise
1.链接地址: http://bailian.openjudge.cn/practice/2979 http://poj.org/problem?id=1015 2.题目: 总Time Limit: ...
- poj 1015 Jury Compromise(背包+方案输出)
\(Jury Compromise\) \(solution:\) 这道题很有意思,它的状态设得很...奇怪.但是它的数据范围实在是太暴露了.虽然当时还是想了好久好久,出题人设了几个限制(首先要两个的 ...
- HDU 1015 Jury Compromise 01背包
题目链接: http://poj.org/problem?id=1015 Jury Compromise Time Limit: 1000MSMemory Limit: 65536K 问题描述 In ...
- 【题解】Jury Compromise(链表+DP)
[题解]Jury Compromise(链表+DP) 传送门 题目大意 给你\(n\le 200\)个元素,一个元素有两个特征值,\(c_i\)和\(d_i\),\(c,d \in [0,20]\), ...
- POJ-1015 Jury Compromise(dp|01背包)
题目: In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting ...
随机推荐
- 【Java并发.5】基础构建模块
本章会介绍一些最有用的并发构建模块,有丶东西(最后一小节,纯干货). 5.1 同步容器类 同步容器类包括 Vector 和 Hashtable ,这些类实现线程安全的方式是:将它们的状态封装起来,并对 ...
- 七、xadmin 编辑界面实现二级联动
很多时候,我们会遇到这种需求,通过一个select框中选择的值,去动态的加载另一个下拉框中的内容 对于前端的同学来讲,这个本应该是一个很简单的需求,获取第一个下拉框的值然后通过ajax去动态加载即可. ...
- 内置函数二: map sorted filter
-----------生活里没有奇迹,大部分的时候奇迹是你自己创造的. # -------------------------------------------------------------- ...
- 剑指offer--2.替换空格
题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 思路:可以使用replace或者 ...
- poj2226 Muddy Fields 填充棒子(二分匹配)
参考博客:https://blog.csdn.net/liujc_/article/details/51287019 参考博客:https://blog.csdn.net/acdreamers/art ...
- hibernate在写cfg配置文件自动创建表时报错org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
在用hibernate框架时,写cfg文件,想自动生成表时,一般写<property name="hibernate.hbm2ddl.auto">create</ ...
- awk+sed编程
- CodeForces Round #548 Div2
http://codeforces.com/contest/1139 A. Even Substrings You are given a string s=s1s2…sns=s1s2…sn of l ...
- HTML,CSS笔记
text-indent 属性规定文本块中首行文本的缩进.允许使用负值.如果使用负值,那么首行会被缩进到左边.p{ text-indent:50px; } HTML <label> 标签的 ...
- centos安装bundle文件
centos安装VMware-Workstation-Full-*.bundle那点事 | 鳗鱼是条狗https://kinggoo.com/centos-vmware.htm Linux 下 VMW ...