dp[i][j]代表选了i个人,D(J)-P(J)的值为j的状态下,D(J)+P(J)的最大和。

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm> using namespace std; const int MAXN = ; int n, m;
int dp[][MAXN];
int path[][MAXN];
int P[], D[];
int sub[], sum[];
int maxval, fix;
int ans[]; bool IfHave( int i, int j, int k )
{
while ( i > )
{
if ( path[i][j] == k ) return true;
j -= sub[ path[i][j] ];
--i;
}
return false;
} void DP()
{
memset( dp, -, sizeof(dp) );
dp[][+fix] = ;
for ( int i = ; i <= m; ++i )
for ( int j = -fix; j <= fix; ++j )
{
if ( dp[i - ][j + fix] >= )
{
for ( int k = ; k <= n; ++k )
{
int newdp = dp[i - ][ j+fix ]+sum[k];
int &curdp = dp[i][ j+fix+sub[k] ];
if ( !IfHave( i-, j+fix, k) && newdp > curdp )
{
path[i][j+fix+sub[k]] = k;
curdp = newdp;
}
}
}
} return;
} void getPath( int i, int j )
{
int cnt = ;
while ( i > )
{
ans[cnt++] = path[i][j];
j -= sub[ path[i][j] ];
--i;
}
return;
} int main()
{
int cas = ;
while ( scanf( "%d%d", &n, &m ) == && (n || m) )
{
for ( int i = ; i <= n; ++i )
{
scanf( "%d%d", &P[i], &D[i] );
sub[i] = P[i] - D[i];
sum[i] = P[i] + D[i];
} fix = * m;
maxval = * fix; DP(); int anssub, anssum;
for ( int i = ; i <= fix; ++i )
if ( dp[m][fix-i] >= || dp[m][fix+i] >= )
{
if ( dp[m][fix-i] > dp[m][fix+i] )
{
anssub = fix-i;
anssum = dp[m][fix-i];
}
else
{
anssub = fix+i;
anssum = dp[m][fix+i];
}
break;
} getPath( m, anssub );
int sum1 = , sum2 = ;
for ( int i = ; i < m; ++i )
{
sum1 += P[ ans[i] ];
sum2 += D[ ans[i] ];
}
printf( "Jury #%d\n", ++cas );
printf( "Best jury has value %d for prosecution and value %d for defence:\n", sum1, sum2 );
sort( ans, ans + m );
for ( int i = ; i < m; ++i )
printf( " %d", ans[i] );
puts("\n");
}
return ;
}

POJ 1015 Jury Compromise (动态规划)的更多相关文章

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

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

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

  3. POJ 1015 Jury Compromise(双塔dp)

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

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

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

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

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

  6. POJ 1015 Jury Compromise dp分组

    第一次做dp分组的问题,百度的~~ http://poj.org/problem?id=1015 题目大意:在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑 ...

  7. [Poj 1015] Jury Compromise 解题报告 (完全背包)

    题目链接:http://poj.org/problem?id=1015 题目: 题解: 我们考虑设计DP状态(因为这很显然是一个完全背包问题不是吗?) dp[j][k]表示在外层循环到i时,选了j个人 ...

  8. POJ #1015 - Jury Compromise - TODO: POJ website issue

    (poj.org issue. Not submitted yet) This is a 2D DP problem, very classic too. Since I'm just learnin ...

  9. HDU POJ 1015 Jury Compromise(陪审团的人选,DP)

    题意: 在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团.选m人的办法是:控方和辩方会根据对候 ...

随机推荐

  1. o'Reill的SVG精髓(第二版)学习笔记——第二章

    在网页中使用SVG 将SVG作为图像: SVG是一种图像格式,因此可以使用与其他图像类型相同的方式包含在HTML页面中,具体可以采用两种方法:将图像包含在HTML标记的<img>元素内(当 ...

  2. apache开启.htaccess及使用方法

    1 . 如何让的本地APACHE器.htaccess 如何让的本地APACHE呢?其实只要简朴修改一下apache的httpd.conf设置就让APACHE.htaccess开启了,来看看操作 打开h ...

  3. springboot jar 部署到linux之后 获取类资源文件问题-- 仅限linux 下 情况比较特殊 需要获取打到jar内的 讲台资源 只能通过流获取,根据路径获取不到指定文件 nullpointExption

    https://blog.csdn.net/qq_27000425/article/details/72897282 ClassPathResource类,如果没有指定相对的类名,该类将从类的根路径开 ...

  4. 移动设备HTML5页面布局

    在HTML5标准添加的新元素中,用于常见页面结 构的包括header footer footer nav aside aside article section hgroup . 下面简单介绍一下这个 ...

  5. Win10家庭版卸载Mysql 8.0.13实录

    因为重度嫌弃Mysql 8.0.xxx的各种妖魔鬼怪,所以想卸载了.但是,百度了很多文章,日期也是近几个月,但是却并不适用.所以特写此文记录一下. 按照百度万金油通用第一步,就是要停止MySQL的服务 ...

  6. Java语言利用Collections.sort对Map,List排序

    1.main方法包含TreeMap排序1,TreeMap排序2,HashMap排序,List<Integer>排序,List<Bean>排序,List<Map>排序 ...

  7. JavaScript实现Tab切换

    在网页开发中,常常会遇见很多Tab切换,Tab切换增加网页浏览的舒适性,对于开发人员特别常见,本文使用JS实现tab切换效果,仅对学习中遇到的知识点做一个总结. 效果图如下:     实现思路: 1. ...

  8. wampserver 服务器报500错误,侦察小结

    Internal Server Error The server encountered an internal error or misconfiguration and was unable to ...

  9. Java源码解析——集合框架(五)——HashMap源码分析

    HashMap源码分析 HashMap的底层实现是面试中问到最多的,其原理也更加复杂,涉及的知识也越多,在项目中的使用也最多.因此清晰分析出其底层源码对于深刻理解其实现有重要的意义,jdk1.8之后其 ...

  10. php-5.6.26源代码 - hash存储结构 - 初始化

    初始化 有指定析构函数,在销毁hash的时候会调用,如:“类似extension=test.so扩展”也是存放在HashTable中的,“类似extension=test.so扩展”的module_s ...