题目大意:要求你从n个人中选出m个,每个人有两个值p[i],D[i],要求选出的人p总和与D总和的差值最小。若有相同解,则输出p总+D总最大的方案。

动态规划。

一直在想到底是n枚举外面还是m放外面,好像两者都可以?

做了越来越多的那种“当前层改变下一层”,乍一看题解还以为这是道斜率优化呢。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define inf 1000000000
using namespace std;
int cas,minpd,n,m;
][],path[][],answer[];
],b[];
int main()
{
  scanf("%d%d",&n,&m);
  ||m!=)
  {
      cas++;printf("Jury #%d\n",cas);
      ;i<=n;i++)scanf("%d%d",&a[i],&b[i]);
      memset(f,-,,sizeof(path));
      minpd=m*;
      f[][minpd]=;
      ;j<m;j++)
        ;k<=minpd*;k++)
          ;i<=n;i++)

            &&f[j][k]+a[i]+b[i]>f[j+][k+a[i]-b[i]])
            {
              int t1=j,t2=k;
              &&path[t1][t2]!=i)
              {
                t2-=a[path[t1][t2]]-b[path[t1][t2]];t1--;
              }
              )
              {
                f[j+][k+a[i]-b[i]]=f[j][k]+a[i]+b[i];
                path[j+][k+a[i]-b[i]]=i;
              }
            }
      ,k;
      &&f[m][i-j]<)j++;
      if(f[m][i+j]<f[m][i-j])k=i-j;else k=i+j;
      printf("Best jury has value %d for prosecution and value %d for defence:\n",
      (k-minpd+f[m][k])/,(f[m][k]-k+minpd)/);
      ;i<=m;i++)
      {
        answer[i]=path[m-i+][k];
        k-=a[answer[i]]-b[answer[i]];
      }
      sort(answer+,answer+m+);
      ;i<=m;i++)printf("%d ",answer[i]);
      printf("\n\n");
      scanf("%d%d",&n,&m);
   }
}

poj1015

最近感觉剪贴板出了点问题,代码提交上去动不动就是too long。。。

[POJ1015]Jury Compromise的更多相关文章

  1. poj1015 Jury Compromise【背包】

    Jury Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions:32355   Accepted:8722   ...

  2. POJ-1015 Jury Compromise(dp|01背包)

    题目: In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting ...

  3. poj1015 Jury Compromise[背包]

    每一件物品有两个属性.朴素思想是把这两种属性都设计到状态里,但空间爆炸.又因为这两个属性相互间存在制约关系(差的绝对值最小),不妨把答案设计入状态中,设$f[i][j]$选$i$个人,两者之差$j$. ...

  4. $POJ1015\ Jury\ Compromise\ Dp$/背包

    洛谷传送门 $Sol$ 这是一道具有多个“体积维度”的$0/1$背包问题. 把$N$个候选人看做$N$个物品,那么每个物品有如下三种体积: 1.“人数”,每个候选人的“人数”都是$1$,最终要填满容积 ...

  5. POJ 1015 Jury Compromise(双塔dp)

    Jury Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 33737   Accepted: 9109 ...

  6. HDU 1015 Jury Compromise 01背包

    题目链接: http://poj.org/problem?id=1015 Jury Compromise Time Limit: 1000MSMemory Limit: 65536K 问题描述 In ...

  7. 背包系列练习及总结(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 ...

  8. 【题解】Jury Compromise(链表+DP)

    [题解]Jury Compromise(链表+DP) 传送门 题目大意 给你\(n\le 200\)个元素,一个元素有两个特征值,\(c_i\)和\(d_i\),\(c,d \in [0,20]\), ...

  9. poj 1015 Jury Compromise(背包+方案输出)

    \(Jury Compromise\) \(solution:\) 这道题很有意思,它的状态设得很...奇怪.但是它的数据范围实在是太暴露了.虽然当时还是想了好久好久,出题人设了几个限制(首先要两个的 ...

随机推荐

  1. js判断手机端操作系统(Andorid/IOS),并自动为链接添加相应下载地址

    <script type="text/javascript"> $(document).ready(function(e) { var u = navigator.us ...

  2. The certificate used to sign "XXX" has either expired or has been revoked

    在Xcode真机调试开发过程中,无论是使用个人证书或者是企业证书,经常会遇到这样的问题:The certificate used to sign "XXX" has either ...

  3. ios手势

    iOS 手势操作:拖动.捏合.旋转.点按.长按.轻扫.自定义 大 中 小   1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. i ...

  4. Android 天气曲线

    参考:http://blog.csdn.net/qy274770068/article/details/51560148

  5. Apache commons-codec笔记

  6. PHP数据库操作

    PHP实现数据库的增删改查 <?php $conn=mysql_connect('localhost','root','root'); if(!$conn){ echo "connec ...

  7. 关于logcat日志

    最近学习android,碰到了logcat,个人总结一下. 当不出日志是解决办法: ProjectMenu---后台设置----LOG设置---LOG开关 Logcat(deprecated)和Log ...

  8. 动手动脑之小程序:TryAndCatch

    源代码 import java.util.InputMismatchException;import java.util.Scanner;public class TryAndCatch {publi ...

  9. 谈谈我的编程之路---WAMP(一)

    WAMP的一些配置与使用心得(PHP) 记得第一次接触PHP的时候,我都不知道PHP为什么要大写,但是我却用它来进行工作了,有时候生活就是一场美丽的邂逅 青涩的我,在ES哥的引领下,第一次接触到了WA ...

  10. iOS源码之OC相册,可以循环查看图片

    #import "ViewController.h" #import "YZUIScrollView.h" #define kuan ([UIScreen ma ...