ACM - 动态规划 - UVA323 Jury Compromise
题解
考虑用动态规划。该问题要求解的最终状态为,选出的 \(m\) 个人,使得辩方总分与控方总分差的绝对值最小,总分之和最大。即 \(\left| D(\mathcal{J}) - P(\mathcal{J}) \right|\) 最小,同时 \(D(\mathcal{J}) + P(\mathcal{J})\)最大。
使用三维 \(dp\) 数组记录状态,\(dp[i][j][k]\) 表示前 \(i\) 个人选出 \(j\) 个人同时辩方总分和为 \(k\) 时的最大总分和。
状态转移方程
根据 \(dp\) 数组的状态含义,状态 \(dp[i][j][k]\) 表示前 \(i\) 个人选出 \(j\) 个人同时总分和为 \(k\) 时的最小总分差绝对值。对于第 \(i\) 个人来说,我们可“选出”,也可以“不选出”。如果“选出”该人,则该状态由 \(dp[i - 1][j - 1][k - d_i]\) 决定;如果“不选出”,则该状态由 \(dp[i - 1][j][k]\)决定。再具体考虑 \(dp\) 数组的含义,可以写出状态转移方程:
\left\{
\begin{aligned}
& \max(dp[i - 1][j][k], dp[i][j][k]) \\
& \max(dp[i - 1][j - 1][k - d_i], dp[i][j][k]) + d_i + p_i
\end{aligned}
\right.
\]
状态搜索方向
从 \(i\) 到 \(j\) 再到 \(k\),以此从小到大搜索。
初始化 \(i=1\) 时的 \(dp\) 数组。
程序:
ACM - 动态规划 - UVA323 Jury Compromise的更多相关文章
- UVA323 Jury Compromise
思路:背包类DP 提交:3次 错因:没有注意得分的上下界导致 RE 显示 WA 题解: 我们很容易的想到把两种分数做一个差,来尽量背到 \(0\) . 那最大化总分呢?这时我们可以用两种分数的和作为物 ...
- Jury Compromise
K - Jury Compromise 参考:ACM POJ 1015 Jury Compromise(陪审团的人选,动态规划题,难) 说实话真有点难想,用一个DP[i][j]来表示在选取i个人,辩控 ...
- 【DP专辑】ACM动态规划总结
转载请注明出处,谢谢. http://blog.csdn.net/cc_again?viewmode=list ---------- Accagain 2014年5月15日 ...
- 背包系列练习及总结(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 ...
- 【DP专辑】ACM动态规划总结(转)
http://blog.csdn.net/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强, ...
- POJ 1015 Jury Compromise(双塔dp)
Jury Compromise Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33737 Accepted: 9109 ...
- HDU 1015 Jury Compromise 01背包
题目链接: http://poj.org/problem?id=1015 Jury Compromise Time Limit: 1000MSMemory Limit: 65536K 问题描述 In ...
- poj1015 Jury Compromise【背包】
Jury Compromise Time Limit: 1000MS Memory Limit: 65536K Total Submissions:32355 Accepted:8722 ...
- 【题解】Jury Compromise(链表+DP)
[题解]Jury Compromise(链表+DP) 传送门 题目大意 给你\(n\le 200\)个元素,一个元素有两个特征值,\(c_i\)和\(d_i\),\(c,d \in [0,20]\), ...
随机推荐
- oj教程--链表
链表.我们知道数组是一种通用的数据结构,能用来实现栈.队列等很多数据结构.而链表也是一种使用广泛的通用数据结构,它也可以用来作为实现栈.队列等数据结构的基础,基本上除非需要频繁的通过下标来随机访问各个 ...
- 点击弹出div内容包括遮罩层
效果: HTML: <!-- 添加分组按钮 --> <div class="group_add" onclick = "docu ...
- vue 中contenteditable="true"添加可编辑属性后v-model双向绑定失效的解决办法
在项目中会遇到需要编辑单元格的双向绑定问题,v-model双向绑定会在添加contenteditable="true"属性后失效解决方法如下,亲测好用(v-html和@blur实现 ...
- Python的介绍与主要方向
1.1 编程与编程语言 python是一门编程语言,作为学习python的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程? 编程的目的: 计算机的发明,是为了用机器取代/解放人力, ...
- python 编辑器提示 do not use bare except
在捕获异常时,应该尽可能指定特定的异常,而不是只使用 except 语句. 比如说,except 语句会捕获 KeyboardInterrupt 和 SystemExit 异常,但 KeyboardI ...
- hexo部署到github时,提示typeError [ERR_INVALID_ARG_TYPE] The “mode“ argument must be integer. Receive
hexo部署到github时,提示typeError [ERR_INVALID_ARG_TYPE]: The "mode" argument must be integer. Re ...
- think php 上下架修改+jq静态批量删除+ajax删除+全选
视图代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF ...
- nginx lua模块常用的指令
lua_code_cache 语法:lua_code_cache on | off 默认: on 适用上下文:http.server.location.location if 这个指令是指定是否开启l ...
- Mysql-关系型数据库与非关系型数据库
一.什么是数据库 数据库是数据的仓库. 与普通的"数据仓库"不同的是,数据库依据"数据结构"来组织数据,因为"数据结构",所以我们看到的数据 ...
- jmeter关于入参转码encode问题
我们的工作中,通过抓包经常会发现有很多入参都是被encode过一层,形成了如上图所示的样子: 这些参数我们是可以通过fiddler去转码的:但是如果我们要做jmeter的脚本,不可能每一次都手动去转码 ...