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. CentOS command

    管理centos服务器的时候常会对文件进行一些常规操作,除了ftp之外了解在ssh下必要的文件操作命令那也是必不可少的,以下摘录一些常用的文件操作命令: 文件操作: ls ####查看目录中的文件## ...

  2. cout 堆栈,operator&lt;&lt; 运算符重载输出问题

    在C++中cout的输出流其中,有一些问题非常easy出错,就比方以下这道简单程序.看似简单.但却是一个值得深思的问题~~ #include <iostream> using namesp ...

  3. vmstat输出项解释

    输出项的解释例如以下: procs * r列表示执行和等待cpu时间片段的进程数,这个值假设长期大约系统cpu个数.说明cpu不足 * b列表示在等待资源的进程数.比方正在等待IO或者内存交换等等 m ...

  4. CF:Problem 427C - Checkposts强连通 Tarjan算法

    tarjan算法第一题 喷我一脸. ...把手写栈的类型开成了BOOL.一直在找错.. . #include<cstdio> #include<cstring> #includ ...

  5. Android 代码设置Activity 背景透明

    当指定Activity 样式 Them.Dialog 时候 又不同意用XML 设置 Activity 的背景颜色的时候 用代码 this.getWindow().getDecorView().setB ...

  6. Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源代码实现

    假设Spark的部署方式选择Standalone,一个採用Master/Slaves的典型架构,那么Master是有SPOF(单点故障,Single Point of Failure).Spark能够 ...

  7. gradle使用笔记

    1 gradle user home 默认情况下是-/.gradle目录.可以使用gradle -g [directory]修改. 1.1 ./gradle/caches gradle下载的所有的依赖 ...

  8. train_action

    # 导入数值计算模块 import numpy as np import tensorflow as tf # 创建计算会话 sess = tf.Session() # 生成数据,创建占位符和变量A ...

  9. query或者JavaScript实现在textarea光标处插入文本

    1.Jquery函数实现: $(function() { /* 在textarea处插入文本--Start */ (function($) { $.fn.extend({ insertContent ...

  10. Avito Code Challenge 2018 A~E

    A. Antipalindrome 还以为是什么神dp结果就是分情况讨论啊 原串是一串一样的字符的话输出0,是回文串的话输出n-1,否则直接输出原串长度 #include<iostream> ...