题目大意:要求你从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。。。

最新文章

  1. iOS9支付宝无法调起客户端
  2. ios合并静态库
  3. 自适应网页设计(Responsive Web Design)
  4. (转)SVN分支/合并原理及最佳实践
  5. 2016 ICPC北京站现场赛总结(再度流水账)
  6. SQL 数据结构操作语句
  7. 双机倒换(NewStartHA,SKYbility,hacmp,hp unix双机)
  8. 【转】文件同步软件FreeFileSync
  9. typedef与define的区别
  10. Oracle11g R2学习系列 之六数据库链接,快照及序列
  11. 机器学习Matlab打击垃圾邮件的分类————朴素贝叶斯模型
  12. 屏幕居中(DIV/CSS) 的几种方法(转)
  13. Xcode版本太低引发的bug,xcode各种版本下载方式详解
  14. Go语言基础之反射
  15. 【原创】大叔经验分享(2)为什么hive在大表上加条件后执行limit很慢
  16. [security CRT] VB实现自动下载脚本
  17. SQL Server生成数据库的数据字典存储过程
  18. 使用Jekins自动构建项目(GitLab+Java Maven)
  19. 3.1-uC/OS-III的特点:
  20. 提高Bash使用效率的方法

热门文章

  1. java”伪“批量上传
  2. iOS应用架构谈(三):View层的组织和调用方案(下)
  3. android viewPager 切换页面时防止fragment重新加载
  4. Android Service 与 IntentService
  5. Java 回调机制的理解
  6. gzip
  7. 【Java EE 学习 21 下】【使用java实现邮件发送、邮件验证】
  8. 缓慢变化维 (Slowly changing dimension)
  9. Win7下的内置FTP组件的设置详解
  10. android 入门-R文件的死与活