Java实现会MLE那我也没办法了

 //辩方总分和控方总分之差简称为“辩控差”
//辩方总分和控方总分之和简称为“辩控和”
//现用f(j, k)表示,取j 个候选人,使其辩控差为k 的所有方案中,辩控和最大的那个方案
//规定,如果没法选j 个人,使其辩控差为k,那么f(j, k)的值就为-1,称方案f(j, k)不可行
//那么,如果对k 的所有可能的取值,求出了所有的f(m, k) (-20×m≤ k ≤ 20×m),那么陪审团方案自然就很容易找到了
//显然,方案f(j, k)是由某个可行的方案f(j-1, x) (-20×m ≤ x ≤ 20×m)演化而来的
//而且,由于题目中辩控差的值k 可以为负数,而程序中数租下标不能为负数
//所以,在程序中不妨将辩控差的值都加上20*m,以免下标为负数导致出错
 #include<vector>
#include<cstdio>
#include<iostream>
using namespace std;
int dp[][],sub[],sum[];
vector<int> path[][];
int main() {
for(int n,m,Case=;~scanf("%d%d",&n,&m) && n && m;) {
for(int i=; i<; i++)for(int j=; j<; j++)path[i][j].clear();//清空vector
for(int i=; i<; i++)for(int j=; j<; j++)dp[i][j]=-;
for(int i = ,d,p; i <= n; i++) cin>>d>>p,sub[i] = d-p,sum[i] = d+p;
int ans = *m,x;
dp[][ans] = ;
int time1=;
for(int k = ; k <= n; k++)//选择一个
for(int i = m-; i >= ; i--)//进行逆推
for(int j = ; j < *ans; j++)
if(dp[i][j] >= ) {
if(dp[i+][j+sub[k]] <= dp[i][j] + sum[k]) {
dp[i+][j+sub[k]] = dp[i][j] + sum[k];
path[i+][j+sub[k]] = path[i][j];//每次更新都要把path全部复制过来,就是因为这个才用的vector
path[i+][j+sub[k]].push_back(k);
}
}
for(x = ; dp[m][ans+x] == - && dp[m][ans-x] == -; x++);
int temp = (dp[m][ans+x] > dp[m][ans-x]) ? x : -x;
int sumD = (dp[m][ans+temp] + temp )/;
int sumP = (dp[m][ans+temp] - temp )/;
printf( "Jury #%d\n",++Case);
printf( "Best jury has value %d for prosecution and value %d for defence:\n", sumD,sumP);
for(int i=; i < m; i++ )printf( " %d", path[m][ans+temp][i]);
printf( "\n\n" );
}
return ;
}

C++-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

    题目大意:要求你从n个人中选出m个,每个人有两个值p[i],D[i],要求选出的人p总和与D总和的差值最小.若有相同解,则输出p总+D总最大的方案. 动态规划. 一直在想到底是n枚举外面还是m放外面, ...

  4. poj1015 Jury Compromise[背包]

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

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

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

  6. POJ 1015 Jury Compromise(双塔dp)

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

  7. HDU 1015 Jury Compromise 01背包

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

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

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

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

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

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

随机推荐

  1. 轻量级RPC设计与实现第三版

    在前两个版本中,每次发起请求一次就新建一个netty的channel连接,如果在高并发情况下就会造成资源的浪费,这时实现异步请求就十分重要,当有多个请求线程时,需要设计一个线程池来进行管理.除此之外, ...

  2. 七月在线spark教程

    链接:https://pan.baidu.com/s/1Ir5GMuDqJQBmSavHC-hDgQ 提取码:qd2e

  3. lvs基础

    lvs类型 lvs-nat: 上下文为masquerade 多目标的DNAT(iptables): 它通过修改请求报文的目标IP地址(同时可能会修改目标端口)至挑选出某RS的RIP地址实现转发: 特性 ...

  4. pyecharts学习笔记2

    目录 line bar grid overlap tap 这个画图是真的美观.香嘛? line 普通折线图 bar 柱状图 grid 可以让不同类型的图展示到同一个画面上 overlap 叠加 tap ...

  5. 【BZOJ 1022】 [SHOI2008]小约翰的游戏John(Anti_SG)

    Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取 的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不 ...

  6. Java数三退一问题

    问题描述 有100人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位. 代码实现: public class Count3Quit1 { ...

  7. luogu P1736 创意吃鱼法

    #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #i ...

  8. Parity game POJ - 1733 带权并查集

    #include<iostream> #include<algorithm> #include<cstdio> using namespace std; <& ...

  9. vue动态绑定图片和背景图

    1.动态绑定图片 <img class="binding-img" :src="require('../assets/images/test.png')" ...

  10. 844. 走迷宫(bfs模板)

    给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁. 最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上.下.左.右任意一个方向移 ...