#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cstdio>
using namespace std;
int dp[][];
//int path[25][1000];
vector<int> path[][];
int sub[];
int add[];
int n,m,fix;
int main ()
{
int num=;
while (cin>>n>>m&&n&&m) {
memset (dp,-,sizeof(dp));
for (int i=;i<=m;i++)
for (int j=;j<;j++)
path[i][j].clear();
for (int i=;i<=n;i++) {
int d,p; cin>>d>>p;
sub[i]=d-p;
add[i]=d+p;
}
fix=*m; dp[][fix]=;
for (int i=;i<=n;i++) {
for (int x=m-;x>=;x--)
for (int y=;y<=*fix;y++) {//因为sub[i]既可以为正也可以为负,所以状态的转移更新的方向 从x=m-1逆推
if (dp[x][y]>=&&dp[x+][y+sub[i]]<dp[x][y]+add[i]) {
dp[x+][y+sub[i]]=dp[x][y]+add[i];
//path[x+1][y+sub[i]] = i; //这样定义是不行的 因为取m个 当前最优路径是动态的 中间结果可能被再次更新
path[x+][y+sub[i]] = path[x][y];
path[x+][y+sub[i]].push_back(i);
}
}
}
int ans; int a[];
for (int i=;i<=fix;i++) if (dp[m][fix-i]>=||dp[m][fix+i]>=) {ans=i;break;}
ans=dp[m][fix+ans]>dp[m][fix-ans]?ans:-ans;//判断ans的正负
int sum1=(dp[m][fix+ans]+ans)/;
int sum2=(dp[m][fix+ans]-ans)/;
int v=fix+ans;
/* for (int i=m;i>=1;i--) {
a[i]=path[i][v];
//cout<<v<<endl;
v-=sub[a[i]];
}*/
printf( "Jury #%d\n", ++num );
printf( "Best jury has value %d for prosecution and value %d for defence:\n", sum1,sum2);
// for (int i=1;i<=m;i++)
//cout<<" "<<a[i];
for( int i=; i < m; i++ )
printf( " %d", path[m][fix+ans][i]);
cout<<"\n\n";
}
return ;
}

poj-1015(状态转移的方向(01背包)和结果的输出)的更多相关文章

  1. POJ Washing Clothes 洗衣服 (01背包,微变型)

    题意:有多种颜色的衣服,由两个人合作来洗,必须洗完一种颜色才能洗下一种,求需要多少时间能洗完. 思路:将衣服按颜色分类,对每种颜色进行01背包,容量上限是该种颜色衣服全部洗完的耗时长一半,其实就是在最 ...

  2. POJ Charm Bracelet 挑饰品 (常规01背包)

    问题:去珠宝店抢饰品,给出饰品种数n,能带走的重量m,以及每种饰品的重量w与价值v.求能带走的最大量. 思路:常规01背包. #include <iostream> using names ...

  3. [Poj 1015] Jury Compromise 解题报告 (完全背包)

    题目链接:http://poj.org/problem?id=1015 题目: 题解: 我们考虑设计DP状态(因为这很显然是一个完全背包问题不是吗?) dp[j][k]表示在外层循环到i时,选了j个人 ...

  4. POJ 2642 The Brick Stops Here 0-1背包

    poj: http://poj.org/problem?id=2642 大意: 给出n(n<=200)块黄铜合金,还有它们的浓度和价钱.给出若干个个询问使它们在n块中取 M 块 使得这M块合金的 ...

  5. POJ 2184:Cow Exhibition(01背包变形)

    题意:有n个奶牛,每个奶牛有一个smart值和一个fun值,可能为正也可能为负,要求选出n只奶牛使他们smart值的和s与fun值得和f都非负,且s+f值要求最大. 分析: 一道很好的背包DP题,我们 ...

  6. POJ 3624.Charm Bracelet-动态规划0-1背包

    Charm Bracelet Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 47876   Accepted: 20346 ...

  7. POJ 2923 【01背包+状态压缩/状压DP】

    题目链接 Emma and Eric are moving to their new house they bought after returning from their honeymoon. F ...

  8. 01背包变种 第k解问题 hdu 2639

    先说说普通01包的状态问题吧 普通的01背包,在状态转移的过程中为了求出最优解,一定是遍历了所有的情况 然后再求的最优解.那么对于第k最优解问题,我们只需要再加一个维度,用来记录每一个状态k优解的状态 ...

  9. luogu P1064|| 01背包||金明的预算

    题目描述如下 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 NNN 元 ...

随机推荐

  1. MyEclipse快捷键大全【转】

    -------------------------------------MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl+1 ...

  2. robot 批处理文件

    robot自带的ride工具不好用,就像填表格似的写脚本,太拘束.所以一直在用sublime text写robot脚本,但是也有问题:用sublime text写的脚本,只能运行一个文件的case,并 ...

  3. Java 类及其组成可使用的修饰符

    2017-11-04 21:51:04 类: 默认,public(一个.java文件只能有一个public类),final,abstract 自己定义,public居多 不允许使用static,pri ...

  4. php-fpm.conf配置文件中文说明详解及重要参数说明

    摘自:https://www.jb51.net/article/148550.htm 感谢分享 php-fpm工作流程 php-fpm全名是PHP FastCGI进程管理器 php-fpm启动后会先读 ...

  5. 『PyTorch』第四弹_通过LeNet初识pytorch神经网络_下

    『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上 # Author : Hellcat # Time : 2018/2/11 import torch as t import t ...

  6. NuGet 控制台代码

    安装 Bootstrap 包:Install-package -version 3.0.0 bootstrap -projectname SportsStore.WebUI 这三句常常连用,在不同项目 ...

  7. 33. 81. Search in Rotated Sorted Array *HARD*

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  8. OC Copy自定义类

  9. OC Copy和内存管理

  10. forget word a out 1

      a 1★ a 不,非,无;在~ 的   2★ ab 相反,变坏,离去     3★ abs 相反,变坏,离去