POJ1015 DP】的更多相关文章

Jury Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28927   Accepted: 7676   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…
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…
题目链接:http://poj.org/problem?id=1015 错误解法: 网上很多解法是错误的,用dp[i][j]表示选择i个人差值为j的最优解,用path[i][j]存储路径,循环次序为“选的第几个人->选哪个人->差值之和”或者“选的第几个人->差值之和->选哪个人”,为了避免选择重复的人需要判断.错误的原因是存储路径的方式使得会覆盖一些情况,比如1 3 5和2 4 6均满足dp[3][k]最优时,若采用2 4 6作为dp[3][k]的最优解,而1 3 5 6是最终答…
题目:http://poj.org/problem?id=1015 DP的第一维是选了几个人,第二维是当前D与P的差值,而值存的是当前D与P的和: 技巧1:通过平移避免负角标,即代码中的fix: 技巧2:做完DP后找出最小的差的绝对值时,如下的那一小段代码很有效率: 技巧3(*):记录路径——①更新路径时每次判断是否重复选了一个人,重复则不更新: ][k+P[i]-D[i]]) { t1=j;t2=k; &&Path[t1][t2]!=i)//验证i是否在前面出现过 { t2-=P[Pat…
首先,读题,真是一窍不通.后来看完程序的意思,才明白吧.. 题意: n个人中选m个,条件是取sum|D-P|最小,当有|D-P|相同的时候取|D+P|最大的.然后输出那些m个人的sumD,sumP,最后升序输出m个人的编号.看完题意,想想好像也不难?...瞎想想可能会想出来. 然后看了题解:http://blog.csdn.net/lyy289065406/article/details/6671105 说说感觉吧: 可能一开始去想真的会死命地盯着目标"取最小"不放了.先说说题解DP(…
洛谷传送门 $Sol$ 这是一道具有多个“体积维度”的$0/1$背包问题. 把$N$个候选人看做$N$个物品,那么每个物品有如下三种体积: 1.“人数”,每个候选人的“人数”都是$1$,最终要填满容积为$M$的背包 2.“辩方得分”,$a[i]$ 3.“反方得分”,$b[i]$ 要求的是辩方总分$D$和控方总分$P$的差的绝对值$|D-P|$最小,如果选择方法不唯一,那么在从中选择$D+P$最大的方案 所以将$a[i]-b[i]$作为体积之一,将$a[i]+b[i]$作为该物品的价值 注意这里的…
题目: 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…
题目:http://poj.org/problem?id=1015 差值是有后效性的,所以“转化为可行性”,开一维记录“能否达到这个差值”. 当然可以开两维分别记录 a 和 b,但 “值只是0或1” 和 “当前元素对应一个 a 只有一个 b ,其他 b 就浪费了” 这两点说明这种状态有优化空间. 开一维记录差值,d数组的值记录最大的 a+b 值较好. 虽然差值是绝对值,但需要分正负以计算.可以全部加一个修正值 fix 解决脚标非负的问题.(不要试图开一维0或1记录正负,会在边界的地方分类讨论而死…
http://poj.org/problem?id=1015 (题目链接) 题意 随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m 人组成陪审团.选m人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0 到20.为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分D和控方总分P的差的绝对值|D-P|最小.如果有多种选择方案的 |D-P| 值相同,那么选辩控双方总分之和D+P最大的方案即可. Solution 源自:http://blog.csdn.n…
常见优化 单调队列 形式 dp[i]=min{f(k)} dp[i]=max{f(k)} 要求 f(k)是关于k的函数 k的范围和i有关 转移方法 维护一个单调递增(减)的队列,可以在两头弹出元素,一头压入元素. 队列中维护的是两个值.一个是位置,这和k的范围有关系,另外一个是f(k)的值,这个用来维护单调性,当然如果f(k)的值可以利用dp值在O(1)的时间内计算出来的话队列中可以只维护一个表示位置的变量. 枚举到一个i的时候,首先判断队首元素的位置是否已经不满足k的范围了,如果不满足就将队首…