51 nod oj 1257 背包问题 V3【01分数规划】
2016-08-22 11:18
183 查看
题目链接:1257
1257 背包问题 V3
基准时间限制:3 秒 空间限制:131072 KB 分值: 80 难度:5级算法题
收藏
关注
N个物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi为整数),从中选出K件物品(K <= N),使得单位体积的价值最大。
Input
Output
Input示例
Output示例
对于求最大单位价值的题-------二分单位价值------判断价值是否成立---------记录分子分母---
代码“:
1257 背包问题 V3
基准时间限制:3 秒 空间限制:131072 KB 分值: 80 难度:5级算法题
收藏
关注
N个物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi为整数),从中选出K件物品(K <= N),使得单位体积的价值最大。
Input
第1行:包括2个数N, K(1 <= K <= N <= 50000) 第2 - N + 1行:每行2个数Wi, Pi(1 <= Wi, Pi <= 50000)
Output
输出单位体积的价值(用约分后的分数表示)。
Input示例
3 2 2 2 5 3 2 1
Output示例
3/4
对于求最大单位价值的题-------二分单位价值------判断价值是否成立---------记录分子分母---
代码“:
#include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; struct node{ int w,p; double bi; }wu[60000]; long long x,y; int n,k; bool cmp(node xx,node yy) { return xx.bi>yy.bi; } bool zhao(double p) { for (int i=0;i<n;i++) wu[i].bi=wu[i].p-wu[i].w*p; sort(wu,wu+n,cmp); x=0,y=0;double lp=0.0; for (int i=0;i<k;i++) { x+=wu[i].p; y+=wu[i].w; lp+=wu[i].bi; } if (lp>=0) return true; else return false; } long long gcd(long long a,long long b) { if (b==0) return a; return gcd(b,a%b); } int main() { scanf("%d%d",&n,&k); for (int i=0;i<n;i++) { scanf("%d%d",&wu[i].w,&wu[i].p); } double l=0,r=50000,m; long long zz,mm,yu; while (fabs(l-r)>10E-6) { m=(l+r)/2; if (zhao(m)) { l=m; zz=x;mm=y; } else r=m; } yu=gcd(max(zz,mm),min(zz,mm)); zz/=yu; mm/=yu; printf("%lld/%lld\n",zz,mm); return 0; }
相关文章推荐
- 51nod 1257 背包问题 V3(分数规划)
- 1257 背包问题 V3——分数规划
- POJ-3621 Sightseeing Cows 01分数(参数搜索)规划问题-最优比率环
- 动态规划7:砝码和种类优化成01背包问题
- 01背包问题的动态规划解法
- 51nod 1257 背包问题 V3
- 01背包问题之动态规划
- 最优比例生成树最优比率生成树 01分数规划问题
- POJ 3621 Sightseeing Cows 01分数规划,最优比例环的问题
- 动态规划之背包问题01——Java实现
- POJ 2728 Desert King (最优比率生成树 01分数规划问题)
- 01背包问题动态规划详解(转载)
- 动态规划的两个经典问题--01背包
- 01分数规划问题
- 01分数规划问题初步
- 动态规划求解01背包相关的基本问题
- poj 3621最优比例生成环(01分数规划问题)
- 01背包问题 -- 经典动态规划题
- 01分数规划问题相关算法与题目讲解(二分法与Dinkelbach算法)
- 01背包问题动态规划详解(转载)