看的解题报告。。http://blog.csdn.net/lyy289065406/article/details/6671105

View Code

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5
 6 using namespace std;
 7
 8 int dp[22][805];
 9 int path[22][805];
10 int p[205],d[205],s[205],v[205];
11 int ans[205];
12 int n,m;
13
14 bool can(int j,int k,int i)
15 {
16     while(j>0)
17     {
18         if(path[j][k]==i)
19             return false;
20         k-=v[path[j][k]];
21         j--;
22     }
23     return true;
24 }
25
26 int main()
27 {
28     int cas=1;
29     while(scanf("%d%d",&n,&m))
30     {
31         if(!n && !m) break;
32         memset(dp,-1,sizeof(dp));
33         memset(path,0,sizeof(path));
34         for(int i=1;i<=n;i++)
35         {
36             scanf("%d%d",&p[i],&d[i]);
37             s[i]=p[i]+d[i];
38             v[i]=p[i]-d[i];
39         }
40         int fix=m*20;
41         dp[0][fix]=0;
42         for(int j=1;j<=m;j++)
43         {
44             for(int k=0;k<=2*fix;k++)
45             {
46                 if(dp[j-1][k]>=0)
47                 {
48                     for(int i=1;i<=n;i++)
49                     {
50                         if(dp[j][k+v[i]] < dp[j-1][k] + s[i] && can(j-1,k,i))
51                         {
52                             dp[j][k+v[i]]=dp[j-1][k]+s[i];
53                             path[j][k+v[i]]=i;
54                         }
55                     }
56                 }
57             }
58         }
59
60         int minv=0;
61         for(int k=0;k<=fix;k++)
62         {
63             if(dp[m][fix+k]>=0 && dp[m][fix+k]>dp[m][fix-k])
64             {
65                 minv=fix+k;
66                 break;
67             }
68             else if(dp[m][fix-k]>=0)
69             {
70                 minv=fix-k;
71                 break;
72             }
73         }
74         printf("Jury #%d\n",cas++);
75         printf("Best jury has value %d for prosecution and value %d for defence:\n",(dp[m][minv]+minv-fix)/2,(dp[m][minv]+fix-minv)/2);
76         for(int j=m,k=minv;j>0;j--)
77         {
78             ans[j]=path[j][k];
79             k-=v[ans[j]];
80         }
81         sort(ans+1,ans+m+1);
82         for(int i=1;i<=m;i++)
83             printf(" %d",ans[i]);
84         puts("\n");
85     }
86     return 0;
87 }

转载于:https://www.cnblogs.com/Missa/archive/2012/11/27/2790613.html

poj 1015(dp)相关推荐

  1. J - Milking Time POJ - 3616(dp动态规划)

    Bessie is such a hard-working cow. In fact, she is so focused on maximizing her productivity that sh ...

  2. poj 滑雪(DFS)||(DP+递归)

    滑雪 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael ...

  3. Jury Compromise POJ - 1015

    Jury Compromise POJ - 1015 题意: 在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从这n个人中 ...

  4. F - 你这是第一次让我看到落泪了呢 POJ - 3661Running 区间DP

    F - 你这是第一次让我看到落泪了呢 POJ - 3661 The cows are trying to become better athletes, so Bessie is running on ...

  5. opj1837 Balance(dp)

    http://poj.org/problem?id=1837 (1)用dp[i][j]表示挂了 i 个重物时 平衡度为 j 的数目: (2)核心部分: for(j=1;j<=m;j++)for( ...

  6. Fire (poj 2152 树形dp)

    Fire (poj 2152 树形dp) 给定一棵n个结点的树(1<n<=1000).现在要选择某些点,使得整棵树都被覆盖到.当选择第i个点的时候,可以覆盖和它距离在d[i]之内的结点,同 ...

  7. 我是一名铺砖匠——铺砖问题汇总(DP)

    鉴于多次遇到铺砖问题,因此目前遇到对此类问题进行总结: 铺砖问题主要分类: 1.简单的一维铺砖问题 2.二维铺砖问题 2*1的砖是否可以铺满N*M的地面 3.二维铺砖铺满有多少种方法 a.2*1的砖铺 ...

  8. H - Fibonacci POJ - 3070 (矩阵快速幂)

    H - Fibonacci POJ - 3070 (矩阵快速幂) Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and ...

  9. A - Expanding Rods POJ - 1905(二分)

    A - Expanding Rods POJ - 1905(二分) 题目 Problem Description When a thin rod of length L is heated n deg ...

最新文章

  1. 美空管官员:政府停摆致人手不足 危及航空安全
  2. 神策 FM | 科学创造「高价值」人生,终止“瞎忙”式勤奋
  3. 瑞星:周末拦截挂马网站数减少 新闻类网站占主打
  4. MySQL和mq一致性,Mysql与Redis一致性问题
  5. 腾讯校招历年经典面试汇总:C++研发岗
  6. 位运算之左移右移运算之详解
  7. 自学篇之----html的所有input标签 以及post和get提交之间的区别
  8. 大数据下的供应商评分系统
  9. key去掉下划线自动大写首字母工具类
  10. android gprs工作流程,Android pppd_gprs脚本启动过程
  11. Win 10 Visual Studio 2019 C# .net 5 简繁体转换
  12. 华为 eNSP 模拟器配置动态路由(ospf)
  13. 北京“银医一卡通”项目启动
  14. sql server数据修复语句
  15. 软件测试-制定测试策略
  16. 基于ssm高校科研成果管理系统 java ideamysql
  17. 无监督学习之聚类方法
  18. 小程序分享功能怎么做_微信电影小程序怎么做?微信电影小程序项目收益图分享...
  19. 收藏一个网站可以在线生成带图片的二维码
  20. Windows10连接蓝牙耳机不能用耳机本身麦克风的解决办法

热门文章

  1. LeetCode 1723. 完成所有工作的最短时间(DFS+剪枝 / 状态压缩DP)
  2. LeetCode 425. 单词方块(Trie树+DFS)
  3. LeetCode 1283. 使结果不超过阈值的最小除数(二分查找)
  4. 文本查询TextQuery类文件编写
  5. 怎么画韦布尔分布_手机按键寿命测试的样本数量怎么定?一文看懂 简述威布尔分布及其应用...
  6. 10.数据库中的内置函数
  7. 小小算法题(CCF)
  8. mysql 混合模式,SQLServer2005混合模式登录配置(用户登录错误18452,233,4064)
  9. Python - Excel文件与CSV文件相互转化
  10. Spring Boot中使用log4j实现http请求日志入mongodb