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]\), ...
随机推荐
- 【C# 线程】Thread类 以及使用案例
System.Threading.Thread类 涉及到的类和枚举 Volatile 类Interlocked 类SpinLock 类SpinWait类Barrier 类ThreadLocal< ...
- 5个相见恨晚的Linux命令,每一个都非常实用
转至:https://zhuanlan.zhihu.com/p/57866239 作为一个开发人员,经常要用到终端命令,最让人头疼的是记不住繁琐的参数.用谷哥度娘检索效率低下,通过man命令显示的结果 ...
- STL漫游之vector
std::vector 源码分析 从源码视角观察 STL 设计,代码实现为 libstdc++(GCC 4.8.5). 由于只关注 vector 的实现,并且 vector 实现几乎全部在头文件中,可 ...
- 『无为则无心』Python日志 — 69、补充:logging.basicConfig()函数说明
目录 1.basicConfig()函数说明 2.应用 1.basicConfig()函数说明 此函数,通过创建一个带有默认Formatter(格式器)的StreamHandler(处理器),并将其添 ...
- Qt:如何生成可执行文件
参考 (18条消息) QT5的程序打包发布(将QT5的工程项目打包成一个exe程序)_kslly的专栏-CSDN博客 环境配置 Windows 10系统 MSVC 2017编译器 工具 Qt 5自带的 ...
- c++刷leetcode记录
#include<iostream> #include<sstream> #include<vector> std::vector<int> split ...
- 文件IO示例程序
系统调用实现 open close write等等 /* #include <unistd.h> ssize_t read(int fd, void *buf, size_t count) ...
- winform中更新UI控件的方案介绍
这是一个古老的话题...直入主题吧! 对winfrom的控件来说,多线程操作非常容易导致复杂且严重的bug,比如不同线程可能会因场景需要强制设置控件为不同的状态,进而引起并发.加锁.死锁.阻塞等问题. ...
- Python安装包报错:PackagesNotFoundError: The following packages are not available from current channels
以安装SimpleITK包为例,安装时,显示下图错误 conda install SimpleITK 按以下操作完成包安装 anaconda search -t conda SimpleITK #查询 ...
- 亿图图示v9.2.0.0 官方中文版及破解激活补丁
介绍 亿图图示是一款由深圳市亿图软件有限公司开发的全类型,综合图形图表设计软件,解决跨平台,多领域,全终端的图形设计,图文混排和工程制图等需求.亿图图示是一款简单易用的快速制图软件,适合任何人绘制任何 ...