poj 1015
来源:互联网 发布:北京科技大学 网络教育 编辑:程序博客网 时间:2024/06/05 16:38
转载请注明出处:優YoU http://blog.csdn.net/lyy289065406/article/details/6671105
题目大意:选出的m 个人,必须满足辩方总分D和控方总分P的差的绝对值|D-P|最小。如果有多种选择方案的 |D-P| 值相同,那么选辩控双方总分之和D+P最大的方案即可。
其实一开始并没有做对,参考了一个大神的博客,思路很好想,但是怎么推我还是不太明白。
/* dp[i][j] i个人,差值为j的和 */#include<cstdio>#include<cstring>#include<cstdlib>int dp[50][1000],path[50][1000][30];int n,m,i,j,k,cas,fix,sumd,sump,temp,t;int d[300],p[300],plu[300],subs[300];int main(){while( scanf("%d%d",&n,&m) && n && m){printf( "Jury #%d\n", ++cas);for( i=0; i<n; i++){scanf( "%d%d", &d[i], &p[i]);plu[i] = d[i] + p[i];subs[i] = d[i] - p[i];}fix = 20*m;memset(dp,-1,sizeof(dp)); memset(path,0,sizeof(path));dp[0][fix] = 0;for(k=0; k<n; k++)for(i=m-1; i>=0; i--)for(j=0; j<=fix*2; j++)if(dp[i][j]>=0){if(dp[i+1][j+subs[k]]<dp[i][j]+plu[k]){dp[i+1][j+subs[k]]=dp[i][j]+plu[k];for(t=0; t<i; t++) path[i+1][j+subs[k]][t]=path[i][j][t];path[i+1][j+subs[k]][t]=k;}}for(i = 0; dp[m][fix+i] == -1 && dp[m][fix-i] == -1; i++);temp = dp[m][fix+i] > dp[m][fix-i] ? i : -i;sumd = (dp[m][fix+temp]+temp)/2;sump = (dp[m][fix+temp]-temp)/2;printf("Best jury has value %d for prosecution and value %d for defence:\n", sumd, sump);for(i=0; i<m; i++) printf(" %d",path[m][fix+temp][i]+1);printf("\n");}}听说写博客能加深对题目的理解,第一次写,希望能成为对我的激励吧
阅读全文
1 0
- POJ 1015
- POJ-1015
- POJ 1015
- POJ 1015
- POJ 1015
- Poj 1015
- poj-1015
- poj 1015
- POJ 1015
- POJ 1015
- POJ 1015
- POJ 1015
- poj 1015
- POJ 1015题意
- POJ 1015 Jury Compromise
- poj 1015 Jury Compromise
- [poj]动态规划1015
- POJ 1015 Jury Compromise
- hash思维题目
- NYOJ737 石子合并(一)(区间dp,详细)
- 协同开发中SVN的使用规范
- 。。
- lintcode--字符串查找
- poj 1015
- RTP(Robi改造计划)--- 觉得还是搞风火轮(leg-wheel)好
- 10种优化页面加载速度的方法
- CodeFroces 823B. Petya and Exam(构造题)
- java实现多线程有两种方法:1、集成Thread类、2、实现Runnable接口
- BLE 4.2的新功能加强了隐私和安全,解决了早期BLE的缺陷并且提高了能效
- IOS中使用iframe无法滚动解决办法
- 单词搜索 II-LintCode
- 【Linux】红帽7搭建本地YUM源