Jury Compromise

POJ-1015

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;
const int INF=0X3F3F3F3F;
const int maxn=203;
const int maxm=22;
int n,m;
int d[maxn],p[maxn];//被告和原告
int add[maxn],sub[maxn];//sub[i]表示辩控差也就是p-d
int dp[maxn][maxm][802];//dp[i][j][k]表示从前i个人里面选择j个人,辩控差为k时的最大值// dp[i,j,k]=max{dp[i-1,j,k],dp[i-1,j-1,k-d[i]]+ad[i]}
int path[maxn][maxm][802];
int ans[maxm];
struct node{
int defence;
int prosecute;
int num;
};
int main(){
int cases=0;
while(cin>>n>>m&&(n||m)){
for(int i=1;i<=n;i++){
cin>>p[i]>>d[i];
add[i]=p[i]+d[i];
sub[i]=p[i]-d[i];
}
memset(dp,-INF,sizeof(dp));
int fix=m*20;//表示修正值
for(int i=0;i<=n;i++){
dp[i][0][fix]=0;////由于修正了数值,因此dp[i][0][fix]才是真正的dp[i][0][0]
}
for(int i=1;i<=n;i++){
for(int j=1;j<=i&&j<=m;j++){
for(int k=0;k<=fix*2;k++){
dp[i][j][k]=dp[i-1][j][k];
path[i][j][k]=path[i-1][j][k];
if(k>=sub[i]&&dp[i-1][j-1][k-sub[i]]>=0&&k-sub[i]<=2*fix){
if(dp[i-1][j-1][k-sub[i]]+add[i]>dp[i][j][k]){
dp[i][j][k]=dp[i-1][j-1][k-sub[i]]+add[i];
path[i][j][k]=i;
}
}
}
}
}
int diff,k;
for(k=0;k<=fix;k++){
if(dp[n][m][fix-k]>=0||dp[n][m][fix+k]>=0){
break;
}
}
if(dp[n][m][fix-k]>dp[n][m][fix+k]){
diff=fix-k;
}else diff=fix+k;
cout<<"Jury #"<< ++cases <<endl;
cout<< "Best jury has value ";
//辩方总值 = (辨控和+辨控差-修正值)/2
cout<<(dp[n][m][diff]+diff-fix)/2<<" for prosecution and value "; //控方总值 = (辨控和-辨控差+修正值)/2
cout<<(dp[n][m][diff]-diff+fix)/2<<" for defence:"<<endl;
//类似于背包输出路径
for (int i=n,j=m,k=diff; j>=1;)
{
int p = path[i][j][k] ;
ans[j] = p;
k -= sub[p];
j--;
i = path[p-1][j][k];//
}
for (int i=1; i<=m; i++)
{
cout << " " << ans[i];
}
cout<<endl<<endl;
}
return 0;
}

POJ-1015(背包变形+输出路径)的更多相关文章

  1. Codeforces Round #436 E. Fire(背包dp+输出路径)

    题意:失火了,有n个物品,每个物品有价值pi,必须在时间di前(小于di)被救,否则就要被烧毁.救某个物 品需要时间ti,问最多救回多少价值的物品,并输出救物品的顺序. Examples Input ...

  2. 迷宫问题 POJ - 3984 (搜索输出路径)

    题目大意 题目不需要大意,poj居然还有中文题 鸣谢 特别鸣谢ljc大佬提供的方法!!! 解法 我们可能输出个最短路径的长度比较简单,但是输出最短路径真的是没有做过,这里有一种简单的方法 因为我们的d ...

  3. Catenyms POJ - 2337(单词+字典序输出路径)

    题意: 就是给出几个单词 看能否组成欧拉回路或路径  当然还是让输出组成的最小字典序的路 解析: 还是把首尾字母看成点   把单词看成边 记录边就好了 这题让我对fleury输出最小字典序又加深了一些 ...

  4. poj 3414 Pots(bfs+输出路径)

    Description You are given two pots, having the volume of A and B liters respectively. The following ...

  5. uva624 01背包要求输出路径

    You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music is o ...

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

  7. VJP1071新年趣事之打牌(背包+输出路径)

    简单的01背包 保存下方案总数 其实就是dp[v]值 输出路径dfs一下 #include <iostream> #include<cstdio> #include<cs ...

  8. UVA-624 CD---01背包+输出路径

    题目链接: https://vjudge.net/problem/UVA-624 题目大意: 这道题给定一个时间上限,然后一个数字N,后面跟着N首歌的时间长度,要我们 求在规定时间w内每首歌都要完整的 ...

  9. Codeforces Gym-102219 2019 ICPC Malaysia National E. Optimal Slots(01背包+输出路径)

    题意:给你一个体积为\(T\)的背包,有\(n\)个物品,每个物品的价值和体积都是是\(a_{i}\),求放哪几个物品使得总价值最大,输出它们,并且输出价值的最大值. 题解:其实就是一个01背包输出路 ...

随机推荐

  1. codeforces626E.Simple Skewness(三分)

    Define the simple skewness of a collection of numbers to be the collection's mean minus its median. ...

  2. Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad) C. Division (数学)

    题意:有两个数\(p\)和\(q\),找到一个最大的数\(x\),使得\(p\ mod\ x=0\)并且\(x\ mod\ q\ne 0\). 题解:首先,如果\(p\ mod\ q\ne0\),那么 ...

  3. P站风格的DevTools主题

    Chrome插件地址:https://chrome.google.com/webstore/detail/material-devtools-theme-c/jmefikbdhgocdjeejjnne ...

  4. 揭秘井井有条的流水线(ZooKeeper 原理篇)

    本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源.有趣.入门级的 ZooKeeper 教程,面向有编程基础的新手. Z ...

  5. 为树莓派3B添加LCD1602液晶屏

    树莓派3B针脚说明 LCD1602接线说明 VSS,接地VDD,接5V电源VO,液晶对比度调节,接电位器中间的引脚,电位器两边的引脚分别接5V和接地.RS,寄存器选择,接GPIO14RW,读写选择,接 ...

  6. HDU 4746 Mophues(莫比乌斯反演)题解

    题意: \(Q\leq5000\)次询问,每次问你有多少对\((x,y)\)满足\(x\in[1,n],y\in[1,m]\)且\(gcd(x,y)\)的质因数分解个数小于等于\(p\).\(n,m, ...

  7. XSS脚本汇总

    (1)普通的XSS JavaScript注入<SCRIPT SRC=http://***/XSS/xss.js></SCRIPT> (2)IMG标签XSS使用JavaScrip ...

  8. 20 个使用原生 JavaScript 实现的 Web 项目

    20 个使用原生 JavaScript 实现的 Web 项目 20 vanilla JavaScript Web Projects https://github.com/learning-js-by- ...

  9. Apple Watch Series 6 屏幕误触放大后无法还原问题和解决方案

    Apple Watch Series 6 屏幕误触放大后无法还原问题和解决方案 shit Apple,只能放大,不能缩小! 解决方案 关闭缩放功能 https://support.apple.com/ ...

  10. Android低功耗蓝牙(蓝牙4.0)——BLE开发(上)

    段时间,公司项目用到了手机APP和蓝牙设备的通讯开发,这里也正好对低功耗蓝牙(蓝牙4.0及以后标准)的开发,做一个总结. 蓝牙技术联盟在2010年6月30号公布了蓝牙4.0标准,4.0标准在蓝牙3.0 ...