Question:http://poj.org/problem?id=1015
问题点:DP。
 Memory: 1352K        Time: 94MS
Language: C++ Result: Accepted #include <iostream>
#include <vector>
using namespace std;
#define MAX_JURY 201
#define MAX_CHOICE 21 //人员编号从1开始
int dp[][];//21是人 840是辩控差 值是辩控和
vector<int> path[][];//值是最后一条路径
struct jury{
int minus;//辩控差
int sum;//辩控和
};
int main()
{
int total,choice,zero;
jury pool[MAX_JURY];
int eg = ;
while(cin>>total>>choice && (total> && choice>))
{
zero = *choice;//实际零点值
memset(pool,,total);
for(int i=,pi,di;i<=total;i++)
{
cin>>pi>>di;
pool[i].minus = di - pi;
pool[i].sum = di + pi;
}
memset(dp,-,sizeof(dp));
for(int i=;i<;i++)
for(int j=;j<;j++)
path[i][j].clear(); dp[][zero] = ;
for(int k=;k<=total;k++)
{
for(int i=choice;i>;i--)//更新路径先长后短,避免交叉覆盖
{
for(int j=;j<=*zero;j++)
{
if(dp[i-][j]>=)
{
if(dp[i][j+pool[k].minus] < dp[i-][j] + pool[k].sum)
{
dp[i][j+pool[k].minus] = dp[i-][j] + pool[k].sum;
path[i][j+pool[k].minus] = path[i-][j];
path[i][j+pool[k].minus].push_back(k);
}
}
}
}
}
int idx;
for(idx=;dp[choice][zero-idx]==- && dp[choice][zero+idx]==-;idx++);
int v = dp[choice][zero-idx]>dp[choice][zero+idx]?-idx:idx;
idx = zero + v;
cout << "Jury #" << eg++ <<endl;
cout << "Best jury has value "<<(dp[choice][idx]-v)/<<" for prosecution and value "<<(dp[choice][idx]+v)/<<" for defence:"<<endl; for(int l=;l<choice;l++)
{
cout << " "<< path[choice][idx][l] ;
}
cout<<endl;
}
   return 0;
}

北大ACM(POJ1015-Jury Compromise)的更多相关文章

  1. poj1015 Jury Compromise【背包】

    Jury Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions:32355   Accepted:8722   ...

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

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

  3. [POJ1015]Jury Compromise

    题目大意:要求你从n个人中选出m个,每个人有两个值p[i],D[i],要求选出的人p总和与D总和的差值最小.若有相同解,则输出p总+D总最大的方案. 动态规划. 一直在想到底是n枚举外面还是m放外面, ...

  4. poj1015 Jury Compromise[背包]

    每一件物品有两个属性.朴素思想是把这两种属性都设计到状态里,但空间爆炸.又因为这两个属性相互间存在制约关系(差的绝对值最小),不妨把答案设计入状态中,设$f[i][j]$选$i$个人,两者之差$j$. ...

  5. $POJ1015\ Jury\ Compromise\ Dp$/背包

    洛谷传送门 $Sol$ 这是一道具有多个“体积维度”的$0/1$背包问题. 把$N$个候选人看做$N$个物品,那么每个物品有如下三种体积: 1.“人数”,每个候选人的“人数”都是$1$,最终要填满容积 ...

  6. ACM - 动态规划 - UVA323 Jury Compromise

    UVA323 Jury Compromise 题解 考虑用动态规划.该问题要求解的最终状态为,选出的 \(m\) 个人,使得辩方总分与控方总分差的绝对值最小,总分之和最大.即 \(\left| D(\ ...

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

  8. 北大ACM - POJ试题分类(转自EXP)

    北大ACM - POJ试题分类 -- By EXP 2017-12-03 转载请注明出处: by EXP http://exp-blog.com/2018/06/28/pid-38/ 相关推荐文: 旧 ...

  9. Jury Compromise

    K - Jury Compromise 参考:ACM POJ 1015 Jury Compromise(陪审团的人选,动态规划题,难) 说实话真有点难想,用一个DP[i][j]来表示在选取i个人,辩控 ...

  10. POJ 1015 Jury Compromise(双塔dp)

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

随机推荐

  1. 016 ppp authentication

    Press RETURN to get started!       Router>en Router#config t Enter configuration commands, one pe ...

  2. CentOS 7 防火墙开启了哪些服务和端口?

    过滤封包功能的 netfilter 已经内建在 CentOS 7 的内核,但是配置 netfilter 的界面程式 firewalld 却未必有安装,不论是否已经安装,都可以执行下面的安装指令: yu ...

  3. 实战c++中的vector系列--emplace_back造成的引用失效

    上篇将了对于struct或是class为何emplace_back要优越于push_back,可是另一些细节没有提及.今天就谈一谈emplace_back造成的引用失效. 直接撸代码了: #inclu ...

  4. JQuery编程demo练习

    JQuery练习demo:     编敲代码,实现:     1.选中当中一列的复选框时,该复选框所在行的背景色高亮显示(黄色). 2.取消选中复选框时,所在行的背景色恢复. ============ ...

  5. docker+zabbix,使用docker搭建zabbix服务

    Zabbix 介绍 zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵 ...

  6. 10.11无法打开Xcode6.4的解决方法

    前言 mac升级到10.11版本号并安装Xcode7.0Beta之后,Dock中的Xcode6.3图标上出现一个禁止符号,打开提示到App store更新最新版本号,更新到6.4之后问题依然,还是提示 ...

  7. cocos2dx 2.2.3编译第一个apk到安卓手机

    1.android-ndk-r10(注意32位和64位的别下错了 我不小心下错了 折腾了我两天) 2.adt_201407(eclipse已经跟sdk等等集成在一起了)   3.Cococs2d-x ...

  8. Eclipse的安装使用

    1.从官网下载最新的Eclipse http://www.eclipse.org/downloads/

  9. Ubuntu利用TCP协议来获取server时间

    Linux利用TCP协议来获取server时间 这里使用Unix网络编程里面的一个小程序,该client建立一个到server的TCP连接,然后读取由server以直观可读格式简单地送回的当前时间和日 ...

  10. update-java-alternatives 更改默认Java环境

    Ubuntu/debian 更改默认Java环境 我的电脑里安装了两个版本的Java,一个是java-6-sun,还有一个是java-gcjgcj是在JVM非常缓慢的时候诞生的,他可以把Java代码编 ...