poj 1015 Jury Compromise(背包变形dp)】的更多相关文章

In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of members of the general public. Every time a trial is set to begin, a jury has to be selected, which is done as follows. First, several people are draw…
Jury Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 33737   Accepted: 9109   Special Judge Description In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of members of the general…
作为一个oier,以及大学acm党背包是必不可少的一部分.好久没做背包类动规了.久违地练习下-.- dd__engi的背包九讲:http://love-oriented.com/pack/ 鸣谢http://blog.csdn.net/eagle_or_snail/article/details/50987044,这里有大部分比较有趣的dp练手题. hud 2602 01背包板子题 #include<cstdio> #include<iostream> #include<cs…
\(Jury Compromise\) \(solution:\) 这道题很有意思,它的状态设得很...奇怪.但是它的数据范围实在是太暴露了.虽然当时还是想了好久好久,出题人设了几个限制(首先要两个的总和差值最小)(然后需要让它的总和最大).我们发现每一个人的顺序是无关紧要的,这其实又提示了我们可以背包.但我们发现很难设状态,我们需要让我们的总差值接近0,但是我们在加人的时候我们的总差值可能会增大也可能会减小,这不符合背包的基本要求,所以我们不能将总差值设为我们背包的权值.于是一个奇妙的想法产生…
1.链接地址: http://bailian.openjudge.cn/practice/2979 http://poj.org/problem?id=1015 2.题目: 总Time Limit: 1000ms Memory Limit: 65536kB Description 在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团.选m人的办法是: 控 方和辩方会根据对候选人的喜欢程度,给所有…
http://poj.org/problem?id=1015 题目大意:在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团.选m人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20.为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分和控方总分的差的绝对值最小.如果有多种选择方案的辩方总分和控方总分的之差的绝对值相同,那么选辩控双方总分之和最大的方案…
题目链接:http://poj.org/problem?id=1015 题目: 题解: 我们考虑设计DP状态(因为这很显然是一个完全背包问题不是吗?) dp[j][k]表示在外层循环到i时,选了j个人,此时辩方总分和控方总分差值为k的时,辩方和控方的总分的和的最大值 dp[j][k+a[i]-b[i]] = max (dp[j][k + a[i] - b[i]] , dp[j][k] + a[i] + b[i]) 因为是完全背包,所以我们需要写一个search函数判断当前转移的状态是否已经选过了…
第一次做dp分组的问题,百度的~~ http://poj.org/problem?id=1015 题目大意:在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团.选m人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20.为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分和控方总分的差的绝对值最小.如果有多种选择方案的辩方总分和控方总分的之差的绝对值相…
提议:在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团.选m人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20.为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分和控方总分的差的绝对值最小.如果有多种选择方案的辩方总分和控方总分的之差的绝对值相同,那么选辩控双方总分之和最大的方案即可. 题解:开始想到的是二维01背包,因为评价差的总分值最大可能…
大致题意: 从n个候选人中选出m个人作为陪审团.为了让陪审团的选择更公平,辩方和控方都为这n个候选人给出了满意度(辩方为D[j],控方为P[j],范围0至20).现在要使得选出的m位候选人的辩方总和与控方总和的差最小,如果有多个最小,选择辩方总和与空方总和的和最大的那个方案. 分析: 一开始以为就是普通的01背包,结果代码一写,WA了.后来发现|D[j]-P[j]|并不构成最优子结构,所以不是01背包.题目要我们求出的方案辩方总和与控方总和的差最小,并且在这个前提下,使得辩方总和和控方总和的和最…
罗大神说这题很简单,,,,然而我着实写的很难过... 题目链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110495#problem/K 题意: 给定n个人对罪犯的d值和p值,从中选m个人使得abs(sum(d)−sum(p))最小,如果有多种情况则输出sum(p)+sum(d)最大的情况,并升序输出选择的人的编号. 分析: 这题是既要考虑差又要考虑和.还是绝对值最小..刚看见有点懵逼. 其实不方,这题d和p最大只有20,m最…
题意: 在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团.选m人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20.为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分和控方总 分的差的绝对值最小.如果有多种选择方案的辩方总分和控方总分的之差的绝对值相同,那么选辩控双方总分之和最大的方案即可. 思路:详见代码 #include<cstdio> #…
(poj.org issue. Not submitted yet) This is a 2D DP problem, very classic too. Since I'm just learning, so I took this link as reference: http://blog.csdn.net/lyy289065406/article/details/6671105 1. It is a little tricky to pick dependent values for t…
感觉此题略难...... 背包问题.据说有一种二维DP的写法是错的.亲测,背包做法无误. dp[i][j][k]表示前i个物品,选择j个,差值为k的情况下获得的最大总和 dp[i][j][k]=max(dp[i-1][j][k],dp[i-1][j-1][k-差]+和) 即第i个物品用或者不用. DP完成之后,在表中寻找一下最优解即可. #include<cstdio> #include<cstring> #include<cmath> #include<stac…
01背包 我们对于这类选或者不选的模型应该先思考能否用01背包来解. 毫无疑问物体的价值可以看成最大的d+p值,那么体积呢?题目的另一个限制条件是d-p的和的绝对值最小,这启发我们把每个物体的d-p的值当作体积. 可以尝试设计状态f[i, j, k]表示从前i个物品中选j个,体积是k的最大价值. 同样的,我们可以用滚动数组的方法把第一维i去掉. 那么得到状态转移方程: f[j, k] = max(f[j - 1, k - d[i] - p[i]] + d[i] + p[i], f[j, k])…
dp[i][j]代表选了i个人,D(J)-P(J)的值为j的状态下,D(J)+P(J)的最大和. #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; ; int n, m; ][MAXN]; ][MAXN]; ], D[]; ], sum[]; int maxval, fix; ]; bool IfHave( int…
题目不难,暴力地dp一下就好,但是不知道我WA在哪里了,对拍了好多的数据都没找出错误= =.估计又是哪里小细节写错了QAQ..思路是用dp[i][j]表示已经选了i个,差值为j的最大和.转移的话暴力枚举当前选那个即可.代码如下(WA的,以后有机会再找找错在哪里吧0.0): #include <stdio.h> #include <algorithm> #include <string.h> #include <set> using namespace std…
(点击此处查看原题) 题意 为了审判某一个人,需要在n个人当中选出m个人组成陪审团,n个人中每个人都有作为起诉方的价值p和作为辩护方的价值d,为了保证公平性,要求m个人作为起诉方的价值之和P和作为辩护方的价值之和D满足 |P-D| 最小,在此基础上,要求P+D最大.最后求P,D以及选出的作为陪审团的m个人并且这m个人的字典序最小. 解题思路 看懂题目后,很容易就可以发现这是一个背包问题,即是否选择第i个人当作陪审团,不过所选人数必须是m个,相比于01背包问题,这个题目限制了选择的人数,那么我们就…
题目链接: http://poj.org/problem?id=1015 Jury Compromise Time Limit: 1000MSMemory Limit: 65536K 问题描述 In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of members of the general public. Every time a trial is…
Q: 如何判断几件物品能否被 2 辆车一次拉走? A: DP 问题. 先 dp 求解第一辆车能够装下的最大的重量, 然后计算剩下的重量之和是否小于第二辆车的 capacity, 若小于, 这 OK. Description Emma and Eric are moving to their new house they bought after returning from their honeymoon. Fortunately, they have a few friends helping…
Q: dp 数组应该怎么设置? A: dp[i][j] 表示前 i 件物品放入天平后形成平衡度为 j 的方案数 题意: 有一个天平, 天平的两侧可以挂上重物, 给定 C 个钩子和G个秤砣. 2 4 -2 3 3 4 5 8 C = -2, G = 3, 那么 2*(3+4+5)=3*(8); 2*(4+8)=3*(3+5) 共有两种可行的方案, 那么结果就是2 Description Gigel has a strange "balance" and he wants to poise…
每一件物品有两个属性.朴素思想是把这两种属性都设计到状态里,但空间爆炸.又因为这两个属性相互间存在制约关系(差的绝对值最小),不妨把答案设计入状态中,设$f[i][j]$选$i$个人,两者之差$j$.这样dp.于是$O(NM^3)$暴力背包即可,记录转移,也就是$g[i][j][k]$来表示当前到这个人$i$的时候选了$j$人,是怎么转移的,如果由$j-1$转移,说明这个人$i$选了. #include<iostream> #include<cstdio> #include<…
题意:n个陪审团,每个陪审团有x,y值,选出m个陪审团,要求 (sum(xi)-sum(yi))最少,当 (sum(xi)-sum(yi))最少有多个,取sum(xi)+sum(yi)最大那个 ,并顺序输出陪审团的序号 思路:先x-y,x+y存起来,再按当dp[i][j],j相同时,要值最大,当然存路径是最烦的. #include <iostream> #include<cstdio> #include <cstring> #include<algorithm&g…
K - Jury Compromise 参考:ACM POJ 1015 Jury Compromise(陪审团的人选,动态规划题,难) 说实话真有点难想,用一个DP[i][j]来表示在选取i个人,辩控差为j(j值已做些许处理)时辩控总分的最大值,用三个for循环来更新这个值.具体思路还是看参考博客吧.... 优先队列默认top()是最大值,如果写成priority_queue<int,vector<int>,greater<int> > top()则为最小值 代码: /…
题目: In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of members of the general public. Every time a trial is set to begin, a jury has to be selected, which is done as follows. First, several people are…
Description "Fat and docile, big and dumb, they look so stupid, they aren't much fun..." - Cows with Guns by Dana Lyons The cows want to prove to the <= N <= ) cows a thorough interview and determined two values <= Si <= ) of the cow…
Jury Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions:32355   Accepted:8722   Special Judge Description In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of members of the general p…
Q: 01背包最后返回什么 dp[v], v 是多少? A: 普通01背包需要遍历, 从大到小. 但此题因为物品的总重量必定大于背包容量, 所以直接返回 dp[V] 即可 update 2014年3月14日11:22:55 1. 几个月后, 感觉返回的不应该是 dp[V], 二是 dp[0...V] 中的最大值 Description Dearboy was so busy recently that now he has piles of clothes to wash. Luckily, h…
[题解]Jury Compromise(链表+DP) 传送门 题目大意 给你\(n\le 200\)个元素,一个元素有两个特征值,\(c_i\)和\(d_i\),\(c,d \in [0,20]\),现在请你选出\(m\le 20\)个元素使得\(\sum c+\sum d\)最大,使得$|\sum c - \sum d|最小,输出\sum c \(和\)\sum d$和一组合法方案. 分析 是DP无误了. 我们可以先不考虑绝对值,平移一下值域,假如说我们知道\(\sum c +- \sum d…
Q: 额外添加了最大高度限制, 需要根据 alt 对数据进行预处理么? A: 是的, 需要根据 alt 对数组排序 Description The cows are going to space! They plan to achieve orbit by building a sort of space elevator: a giant tower of blocks. They have K (1 <= K <= 400) different types of blocks with w…