题意:从 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

正解运用了背包的思想  进行二维化  第一维表示背包人数容量 第二维表示和 这样能不重不漏把所有情况都枚举了

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<vector>
  5. using namespace std;
  6. const int maxn=;
  7. int dp[][maxn],sub[],Plus[];
  8. vector<int>path[][maxn];
  9. int main(){
  10. int n,m,kase=;
  11. while(scanf("%d%d",&n,&m)==){
  12. if(n+m==)break;
  13. for(int i=;i<m;i++){
  14. for(int j=;j<maxn;j++){
  15. path[i][j].clear();
  16. }
  17. }
  18. memset(dp,-,sizeof(dp));
  19. int a,b;
  20. for(int i=;i<n;i++){
  21. scanf("%d%d",&a,&b);
  22. sub[i]=a-b;
  23. Plus[i]=a+b;
  24. }
  25. int fix=*m;
  26. dp[][fix]=;
  27. for(int k=;k<n;k++){
  28. for(int i=m-;i>=;i--){
  29. for(int j=;j<fix*;j++){
  30. if(dp[i][j]>=){
  31. if(dp[i+][j+sub[k]]<dp[i][j]+Plus[k]){
  32. dp[i+][j+sub[k]]=dp[i][j]+Plus[k];
  33. path[i+][j+sub[k]]=path[i][j];
  34. path[i+][j+sub[k]].push_back(k);
  35. }
  36. }
  37. }
  38. }
  39. }
  40. int i;
  41. for( i=;dp[m][fix-i]==-&&dp[m][fix+i]==-;i++);
  42. int temp=dp[m][fix+i]>dp[m][fix-i]?i:-i;
  43. int sumD = ( dp[m][fix+temp] + temp )/;
  44. int sumP = ( dp[m][fix+temp] - temp )/;
  45. //辩方总值 = (辨控和+辨控差+修正值)/2
  46. //控方总值 = (辨控和-辨控差+修正值)/2
  47. printf( "Jury #%d\n", kase++ );
  48. printf( "Best jury has value %d for prosecution and value %d for defence:\n", sumD,sumP);
  49. for( i=; i < m; i++ )
  50. printf( " %d", path[m][fix+temp][i]+);
  51. printf("\n\n");
  52.  
  53. }
  54. return ;
  55. }

Jury Compromise POJ - 1015 dp (标答有误)背包思想的更多相关文章

  1. POJ 1015 Jury Compromise(双塔dp)

    Jury Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 33737   Accepted: 9109 ...

  2. POJ 1051 Jury Compromise ——(暴力DP)

    题目不难,暴力地dp一下就好,但是不知道我WA在哪里了,对拍了好多的数据都没找出错误= =.估计又是哪里小细节写错了QAQ..思路是用dp[i][j]表示已经选了i个,差值为j的最大和.转移的话暴力枚 ...

  3. 背包系列练习及总结(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 ...

  4. POJ 1015 Jury Compromise 2个月后重做,其实这是背包题目

    http://poj.org/problem?id=1015 题目大意:在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从 ...

  5. OpenJudge 2979 陪审团的人选 / Poj 1015 Jury Compromise

    1.链接地址: http://bailian.openjudge.cn/practice/2979 http://poj.org/problem?id=1015 2.题目: 总Time Limit: ...

  6. poj 1015 Jury Compromise(背包+方案输出)

    \(Jury Compromise\) \(solution:\) 这道题很有意思,它的状态设得很...奇怪.但是它的数据范围实在是太暴露了.虽然当时还是想了好久好久,出题人设了几个限制(首先要两个的 ...

  7. HDU 1015 Jury Compromise 01背包

    题目链接: http://poj.org/problem?id=1015 Jury Compromise Time Limit: 1000MSMemory Limit: 65536K 问题描述 In ...

  8. 【题解】Jury Compromise(链表+DP)

    [题解]Jury Compromise(链表+DP) 传送门 题目大意 给你\(n\le 200\)个元素,一个元素有两个特征值,\(c_i\)和\(d_i\),\(c,d \in [0,20]\), ...

  9. POJ-1015 Jury Compromise(dp|01背包)

    题目: In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting ...

随机推荐

  1. Linux:一位猫奴的意外逆袭

    作者:Vamei,严禁任何形式转载. 1991年年中,林纳斯·托瓦兹(Linus Torvalds)在自己房间里敲着键盘.他全神贯注地盯着14寸的黑色屏幕,都没感觉到自己的小猫Randi在扒自己的裤腿 ...

  2. [书籍]重温《Framework Design Guidelines》

    1. 前言 最近重温了<Framework Design Guidelines>. <Framework Design Guidelines>中文名称为<.NET设计规范 ...

  3. 《程序猿闭门造车》之NBPM工作流引擎 - 开篇

    自己动手,丰衣足食,花了几个周末的休息时间,写了一个轻量级工作流引擎,一来学习技术,二来陶怡情操,暂且命名为NBPM,欢迎围观~~~ 主要功能有: 基于浏览器的在线流程及表单设计 提供流程及表单数据版 ...

  4. TRIO-basic指令--函数FUNCTION

    TRIO-basic支持函数(强类型)编程,与PLC来相比较的话类似于定义的功能块可以重复调用,和C,C#......等一些高级的编程语言的函数类似.上一次的demo中决定尝试TRIO的函数来做一些例 ...

  5. 从HelloWorld开始学习.NET Core

    1.首先创建一个项目文件夹,如E:\CoreProjects 使用cmd命令进入到新建的文件夹中 2.创建一个HelloWorld项目 命令:dotnet new console -o hellowo ...

  6. SQL Server(2000,2005,2008):恢复/回滚时间比预期长(译)

    我已经讨论了各种确定恢复状态的方法,但是本周我参与了一个围绕回滚的有趣讨论.交易已经运行了14个小时,然后发出了KILL SPID.SPID进入回滚,并发生2天和4小时. 自然的问题是为什么不14小时 ...

  7. SDN 实验室学生们

    SDN实验室系列:https://edu.cnblogs.com/campus/fzu/SdnLab --研究生及本科生们的博客及GitHub链接.欢迎各位大佬招募. 研究生 2018级 姓名 博客地 ...

  8. Vicious Keyboard CodeForces - 801A (暴力+模拟)

    题目链接 题意: 给定一个字符串,最多更改一个字符,问最多可以有多少个“VK”子串? 思路: 由于数据量很小,不妨尝试暴力写.首先算出不更改任何字符的情况下有多个VK字串,然后尝试每一次更改一个位置的 ...

  9. NEST.net Client

    NEST.net Client For Elasticsearch简单应用 由于最近的一个项目中的搜索部分要用到 Elasticsearch 来实现搜索功能,苦于英文差及该方面的系统性资料不好找,在实 ...

  10. mysql 无法退出sql命令行编辑

    mysql 无法退出sql命令行编辑 | ANBOBhttp://www.anbob.com/archives/579.html mysql 无法退出sql命令行编辑 - 码农甲乙丙 - CSDN博客 ...