poj 1015

POJ1015-Jury Compromise【动态规划DP】 北大POJ1015-Jury Compromise【动态规划DP】 解题报告+AC代码 立即下载

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

控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20。为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分和控方总分的差的绝对值最小。如果有多种选择方案的辩方总分和控方总分的之差的绝对值相同,那么选辩控双方总分之和最大的方案即可。

输入
输入包含多组数据。每组数据的第一行是两个整数n和m,n是候选人数目,m是陪审团人数。注意,1<=n<=200, 1<=m<=20 而且 m<=n。接下来的n行,每行表示一个候选人的信息,它包含2个整数,先后是控方和辩方对该候选人的打分。候选人按出现的先后从1开始编号。两组有效数据之间以空行分隔。最后一组数据n=m=0
输出
对每组数据,先输出一行,表示答案所属的组号,如 ‘Jury #1’, ‘Jury #2’, 等。接下来的一行要象例子那样输出陪审团的控方总分和辩方总分。再下来一行要以升序输出陪审团里每个成员的编号,两个成员编号之间用空格分隔。每组输出数据须以一个空行结束。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#include <iomanip>
#include <string>
#include <algorithm>
#include <stack>
#include <queue>
#include <set>
#include <vector>
#include <map>
//#include <unordered_map>

#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define l(x) ((x)<<1)
#define r(x) ((x)<<1|1)
#define lowbit(x) ((x)&(-(x)))
#define ms(a,b) memset(a,b,sizeof(a))
#define NSYNC std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);

using namespace std;

int f[30][1000];
int path[30][1000];
int p[300];
int d[300];
int answer[30];

int main(){
	int t1, t2, n, m, minp,i,j,k;
	int c = 0;
	while (scanf("%d %d", &n, &m),n) {
		c++;

		for (int i = 1; i <= n; i++) 
			scanf("%d %d", p + i, d + i);
		
		ms(f, -1);
		ms(path, 0);
		minp = m * 20;
		f[0][minp] = 0;
		
		for (j = 0; j < m; j++) {
			for (k = 0; k <= minp * 2; k++) {
				if(f[j][k] >= 0)for (i = 1; i <= n; i++)
					if (f[j][k] + p[i] + d[i] > f[j + 1][k + p[i] - d[i]]) {
						t1 = j, t2 = k;
						while (t1 > 0 && path[t1][t2] != i) {
							t2 -= p[path[t1][t2]] - d[path[t1][t2]];
							t1--;
						}
						if (t1 == 0) {
							f[j + 1][k + p[i] - d[i]] = f[j][k] + p[i] + d[i];
							path[j + 1][k + p[i] - d[i]] = i;
						}
					}
			}
		}
		

		i = minp;
		j = 0;
		while (f[m][i + j] < 0 && f[m][i - j] < 0)j++;
		if (f[m][i + j] > f[m][i - j])k = i + j;
		else k = i - j;
		printf("Jury #%d\n", c);
		printf("Best jury has value %d for prosecution and value %d for defence:\n", (k - minp + f[m][k]) / 2, (f[m][k] - k + minp) / 2);

		for (i = 1; i <= m; i++){
			answer[i] = path[m - i + 1][k];
			k -= p[answer[i]] - d[answer[i]];
		}

		sort(answer + 1, answer + m + 1);
		for (i = 1; i <= m; i++)
			printf(" %d", answer[i]);
		printf("\n\n");
	}

	return 0;
}
Realtek 10GbE芯片组解析:低成本高速网络方案 10GbE(万兆以太网)技术通过提升网络带宽,显著改善了数据传输效率,成为现代网络架构的核心组件。其工作原理基于高速串行通信协议,通过优化信号处理和编码技术实现低延迟、高吞吐量。在技术价值上,10GbE不仅满足数据中心和企业网络的高需求,还逐步渗透到消费级市场,推动家庭和小型企业的网络升级。应用场景包括NAS存储、视频编辑工作站和云服务接入等。Realtek最新发布的RTL8127、RTL8159和RTL8261C芯片组,以低功耗和低成本优势,进一步降低了10GbE的普及门槛。这些芯片支持PCIe Gen4 阅读详情

相关推荐

阿里云导出的镜像raw转换成vmdk格式工具

阿里云导出的镜像raw转换成vmdk格式工具 1.安装java环境,安装教程不介绍了 2.raw2vmdk软件下载: 在我的链接里面: 3.使用 打开cmd.bat软件: java -jar raw2vmdk.jar (原镜像)C:\\images\\raw\\disk.img (转换的镜像)D:\\images\\vmdk\\disk.vmdk 4.vmware打开vmdk文件 ...

3843

[POJ - 1015]Jury Compromise(01背包问题)

[POJ - 1015]Jury Compromise(01背包问题)

Turing_Sheep的博客 657

ALSA音频开发实战:如何用snd_pcm_avail避免缓冲区溢出(附完整代码)

本文深入探讨了在ALSA音频开发中,如何利用`snd_pcm_avail`函数有效管理环形缓冲区,从而避免音频数据溢出或下溢。通过实战代码示例,详细解析了该函数在播放场景下的核心作用,即实时查询可写入的帧数,并构建了自适应写入循环以实现稳健的流量控制,确保音频流的平滑与稳定。

weixin_29183637的博客 461

POJ-1015(离散化DP)

题目要求|D(J)-P(J)|最小,但|D(J)-P(J)|显然不符合最优子结构,不能直接动态规划,但题目中说要使|D(J)-P(J)|最小时的D(J)+P(J)最大化,我们知道D(J)+P(J)是符合最优子结构的 要是只用让D(J)+P(J)最大,那就是一个0-1背包问题了, 想着要是能将D(J)-P(J)作为一个维度,有一定的范围,再对D(J)+P(J)动态规划的话就好了 令f(i,j,

还有多远 646

axi时序图_(AXI)握手协议(pvld/prdy或者valid-ready)中ready打拍技巧

内容提要ready打拍的问题用FIFO的思路去解决用Buffer的思路去解决问题提出:ready时序如何优化?在valid/ready 握手协议中,valid 与 data的时序优化比较容易理解,(不熟悉valid/ready协议或者valid打拍方法的)大家可以参考上次推送(握手协议(pvld/prdy或者valid-ready或AXI)中Valid及data打拍技巧)。 但是有时候,关键路径是...

weixin_29763641的博客 3320

嵌入式软件面试常见问题及答案

干了多年的嵌入式,被面试过,也面过不少新人,下面这些是面试中很常见的一些问题及答案,答案可以根据自己的经验自己思考下。--持续补充并更新

weixin_37553721的博客 6022

每日一题(5)——公正陪审团问题(动态规划)

问题ID:POJ1015 中文: 描述在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定。陪审团是由法官从公众中挑选的。先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团。选m人的办法是: 控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20。为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分和控方总分的差的绝对值最小。如果有多

小熊不去实验室 4294

Unity分包下载实战:AssetBundle+CDN+热更新全链路指南

分包下载是移动应用资源管理的核心技术,本质是将大体积安装包拆解为按需加载的独立资源单元,以解决用户安装意愿低、首屏启动慢、热更新不可控等关键问题。其底层依赖资源打包机制(如Unity AssetBundle)、全球分发网络(CDN)与安全热更新策略三者协同。AssetBundle提供资源隔离与依赖管理能力,CDN保障低延迟高可用下载,而热更新策略则决定版本控制、灰度发布与异常恢复的工程鲁棒性。该方案广泛应用于中重度游戏、大型工具类App及需要频繁内容迭代的商业项目,直接提升次日留存、过审成功率与用户在线时长

weixin_29762151的博客 354

Jury Compromise 【POJ 1015】

题目链接 POJ 1015 大概题意 在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定。陪审团是由法官从公众中挑选的。先随机挑选n 个人作为陪审团的候选人,然后再从这n 个人中选m 人组成陪审团。选m 人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0 到20。为了公平起见,法官选出陪审团的原则是:选出的m 个人,必须满足辩方总分D和控方总分P的差的绝对值|D-P|最小...

qq_41925919的博客 224

SAR动目标检测三剑客:DPCA/ATI/STAP技术选型指南(含2023最新实验数据对比)

本文深入对比了SAR动目标检测三大主流技术DPCA、ATI与STAP的核心原理与性能差异。基于2023年最新实验数据,分析了它们在最小可检测速度、测速精度、计算复杂度及对通道失配敏感度等方面的优劣,并结合海洋监视与城市交通监控等典型场景,提供了具体的技术选型指南与工程落地考量。

m5n6o7的博客 292

杰理AC696N使用ADC检测电位器调音量教程

本教程详细介绍了在杰理AC696N芯片上使用ADC功能检测电位器电压值的方法。主要内容包括:硬件连接方式(电位器VCC/OUT/GND分别接3.3V、PA3引脚和地线),10位ADC配置(0-1023对应0-3.3V),以及核心代码实现。关键步骤涉及ADC采样通道初始化、GPIO引脚配置(关闭数字输入和上下拉电阻),以及通过定时器实现50Hz采样频率。教程还详解了ADC值到系统音量的线性映射算法,并提供了完整的代码示例和调试方法,帮助开发者实现电位器实时控制音量的功能。

qq_42014563的博客 1245

POJ 1015 (巨难的DP)

题目:poj1015 中文描述 在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定。陪审团是由法官从公众中挑选的。先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团。选m人的办法是: 控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20。为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分和控方总分的差的绝对值最小。如果有多种选择方案的辩方总分和控方总分的之差的绝对值相同,那么选辩控双方总分之和最大的方案即可。 输入 输入包含多组数据。每组数据的第一行是

CHAI_NIAOJINJE的博客 679

LoveSQL

LoveSQL(SQL注入详解) 1、根据题目,显然想到的是sql注入漏洞,直接尝试万能密码 2、此时url构造,查看字段数 /check.php?username=admin' order by 3%23&password=1 # 存在 /check.php?username=admin' order by 4%23&password=1 # 报错 因此,得到总共有三个字段数 注意:url中不能用#,应该用url编码%23 3、用union来查询测试注入点,查看回显点

lunan的博客 1562

Poj 1015

传送门:http://poj.org/problem?id=1015 大概就是有m个人,每个人有一个d值一个p值,从m个人中选出n个人,使得他们的d值和与p值和之差的绝对值最小,若有多个答案两数之差相同选其中d值和与p值和最大的。 也是背包问题。二维数组,dp[i][j],取i个人,差值为j,和放在dp[i][j]中,path[i][j]记录路径。 由于下标没有负数,将整个数组向右...

weixin_30654583的博客 139

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

poj1015

思路: 刚开始想的是用bfs来解决,但是要选多少人,就要有深入多少层,且重复的部分较多,所以,在数据量较小的情况下可以使用。 因此考虑另一种办法:也是网上大部分的dp方法,记录下每个人的控诉值和辩护值之间的 差值a[i] 和 和值b[i],用f[i][j]记录前i个人的总的差值之和为j时总的和值之和,用path[i][j]保存前i个人总的差值之和为j时第i个人的编号,由path[i][j]可知...

a479778594的博客 676

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

POJ1015 Jury Compromise

POJ1015 Jury Compromise 我们可以将每个候选人的辩控差作为该物品的体积之一,把辩控和作为物品的价值。 因为评价差的总分值最大可能就只有[-400,400],所以我们整体加上20*m 为叙述问题方便,现将任一选择方案中,辩方总分和控方总分之差简称为“辩控差”,辩方总分和控方总分之和称为“辩控和”。第i 个候选人的辩方总分和控方总分之差记为V(i),...

weixin_33958366的博客 82

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

poj1015 java ((看了题解好久!!!!

import java.util.LinkedList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int ok=1; while(sc.hasNext()) { int a=sc.nextInt(),b=sc.nextInt(); if(a==b && b=

Loser_LOSERdyh的博客 224

POJ 1015 陪审团人选 [动态规划]

动态规划

小威的专栏 3915

【poj1015】 Jury Compromise

http://poj.org/problem?id=1015 (题目链接)题意:随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m 人组成陪审团。选m人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0 到20。为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分D和控方总分P的差的绝对值|D-P|最小。如果有多种选择方案的 |D-P| 值相同,那么选辩控

MashiroSky的博客 701

北大ACM(POJ1015-Jury Compromise)

Question:http://poj.org/problem?id=1015 问题点:DP。 1 Memory: 1352K Time: 94MS 2 Language: C++ Result: Accepted 3 4 #include <iostream> 5 #include <vector> 6...

aenv6574的博客 200

POJ 1015 DP

题目链接:  http://poj.org/problem?id=1015 分析: (参考于: http://blog.youkuaiyun.com/lyy289065406/article/details/6671105 ) #include #include #include #include #include #include #include #include #inclu

PWZER 794

poj1015 动态规划

poj1015 动态规划 reference:http://blog.youkuaiyun.com/lyy289065406/article/details/6671105 题目大意:从n个人中选取m个人组成陪审团,要求这控方(d)和辩方(p)给这m个人的总分之差的绝对值最小, 如果分数相同,那么选择分数之和最大的。输出最符合要求的m个人,然后输出辩方总值和控方总值。

编码之路 529

poj1015 DP

解题报告 题目:http://poj.org/problem?id=1015 算法:动态规划(类01背包) 思路:设定状态f[i][j][k]表示前i个人中选出j个人达到差值为K的最大和。则转移便是                    F[i][j][k] = max(f[I – 1][j][k],  f[I – 1][j – 1][k – p[i] + d[i]] + p[i] + d[

执米之手,与米偕老 696

POJ1015 Jury Compromise (动态规划 难)

http://poj.org/problem?id=1015 题意:给出n个人,每个人有两个值di和pi要求你从选出m个人是的总的D和P的差距最小,如果差距相同则输出D+P较大的,同时输出选择的m个人,按照升序排列。 做法:刚刚开始想了一个暴力的做法,就是dp[i][j][d][p]就是前i个人选j个人两种值的总和分别为d和p的时候的是否可行,吧第一维滚动掉。然后按着背包写了写,嗯发现找了一些...

KXL5180的博客 322

POJ1015-Jury Compromise【01背包,dp】

正题 题目链接:http://poj.org/problem?id=1015 题目大意 每个人有A值和B值,要求选M个人,使这M个人的|SumA−SumB||SumA−SumB||Sum_A-Sum_B|最小。 解题思路 我们用SumA−SumBSumA−SumBSum_A-Sum_B作为原本的价格,然后用fi,jfi,jf_{i,j}表示已经选了i个人,SumA−Sum...

QuantAsk 619
上一篇: poj 2068(博弈-状态转移)
下一篇: cf 1316E(贪心优化的状态压缩dp) 好题
FawkesLi
博客等级 码龄8年 21粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值