(又是一个奇葩题目)Happy Programming Contest
2013-05-09 20:05
295 查看
题目链接:http://openoj.awaysoft.com:8080/judge/contest/view.action?cid=421#problem/H
题意: N个题目,每个题目有个完成时间,有个价值,现在给定时间t,求最大完成数量,最小完成时间,最大价值.
注意先将背包排序,这里纠结了好久,而且要双重排序....
题意: N个题目,每个题目有个完成时间,有个价值,现在给定时间t,求最大完成数量,最小完成时间,最大价值.
注意先将背包排序,这里纠结了好久,而且要双重排序....
#include <stdlib.h> #include <stdio.h> #include <string.h> struct node { int v,w; }a[55]; int dp[55][1010],sum[55][1110],num[55][1110]; int cmp(const void *a,const void *b) { if ((*(node *)a).v==(*(node *)b).v) return (*(node *)a).w>(*(node *)b).w; return (*(node *)a).v-(*(node *)b).v; } int main() { int t,n,i,j,T; scanf("%d",&T); while (T--) { scanf("%d%d",&t,&n); for (i=1;i<=n;i++) scanf("%d",&a[i].v); for (i=1;i<=n;i++) scanf("%d",&a[i].w); qsort(a,n+1,sizeof(a[0]),cmp); memset(dp,0,sizeof(dp)); memset(num,0,sizeof(num)); memset(sum,0,sizeof(sum)); for (i=1;i<=n;i++) { for (j=0;j<=t;j++) { dp[i][j] = dp[i-1][j]; num[i][j] = num[i-1][j]; sum[i][j] = sum[i-1][j]; if (j>=a[i].v) { if (dp[i][j]<=dp[i-1][j-a[i].v]+a[i].w) { if (dp[i][j]<dp[i-1][j-a[i].v]+a[i].w) { dp[i][j]=dp[i-1][j-a[i].v]+a[i].w; num[i][j]=num[i-1][j-a[i].v]+1; sum[i][j]=sum[i-1][j-a[i].v]+j; } else if (num[i][j]<=num[i-1][j-a[i].v]+1) { if (num[i][j]<num[i-1][j-a[i].v]+1) { num[i][j]=num[i-1][j-a[i].v]+1; sum[i][j]=sum[i-1][j-a[i].v]+j; } else if (sum[i][j]>sum[i-1][j-a[i].v]+j) sum[i][j]=sum[i-1][j-a[i].v]+j; } } } } } int max=0,sum1=0,num1=0; for(i = 0; i <= t; i++) { if( max < dp [i] ) { max = dp [i];num1 = num [i];sum1 = sum [i]; } else if( max == dp [i] ) { if( num1 < num [i] ) { num1 = num [i]; sum1 = sum [i]; } else if( sum1 > sum [i] ) sum1 = sum [i]; } } printf("%d %d %d\n",max,num1,sum1); } return 0; }
相关文章推荐
- ZOJ 3703 Happy Programming Contest
- 湖大训练赛第三场 Happy Programming Contest
- ZOJ3703-Happy Programming Contest
- Python Rapid GUI Programming 第二篇。 30行写一个更奇葩的计算器。Python 基础教程
- ZOJ 3703 Happy Programming Contest(0-1背包)
- ZOJ 3703 Happy Programming Contest
- nullnullH - Happy Programming Contest
- 剑指offer——题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- ZOJ 3703 Happy Programming Contest 0-1背包 DP
- ZOJ 3703 Happy Programming Contest 01背包+记录路径
- Happy Programming Contest
- ZOJ 3313-3321 The 10th Zhejiang University Programming Contest 部分题目解题报告
- ZOJ3703 Happy Programming Contest
- ZOJ 3703 Happy Programming Contest(贪心+0/1背包)
- 北大校赛提前热身,Happy Programming Contest和Digging
- 01背包好题 ZOJ3703 Happy Programming Contest
- H - Happy Programming Contest
- zoj 3703 Happy Programming Contest 不平常的01背包
- ZOJ 3703 Happy Programming Contest
- zoj 3703 Happy Programming Contest 不平常的01背包