装船问题
来源:互联网 发布:lte网络优化视频教程 编辑:程序博客网 时间:2024/04/27 19:29
Problem Description
王小二毕业后从事船运规划工作,吉祥号货轮的最大载重量为M吨,有10种货物可以装船。第i种货物有wi吨,总价值是pi。王小二的任务是从10种货物中挑选若干吨上船,在满足货物总重量小于等于M的前提下,运走的货物的价重比最大。
Input
输入数据的第一行有一个正整数M(0 < M < 10000),表示所有货物最大载重量。在接下来的10行中,每行有若干个数(中间用空格分开),第i行表示的是第i种货物的货物的总价值pi ,总重量wi。(pi是wi的整数倍,0 < pi , wi < 1000)
Output
输出一个整数,表示可以得到的最大价值。
Example Input
100
10 10
20 10
30 10
40 10
50 10
60 10
70 10
80 10
90 10
100 10
Example Output
550
#include<stdio.h>struct node{ int p, w, pw;}a[10000] ,abc;void sort(int left, int right){ int i, j, mid; i=left; j=right; abc=a[i]; mid=a[i].pw; if(i>=j) return ; while(i<j) { while(i<j&&a[j].pw<=mid) j--; a[i]=a[j]; while(i<j&&a[i].pw>=mid) i++; a[j]=a[i]; } a[i]=abc; sort(left, i-1); sort(j+1, right);}int main(){ int n; int i; int sum=0; scanf("%d",&n); for(i=0;i<10;i++) { scanf("%d%d",&a[i].p,&a[i].w); a[i].pw=a[i].p/a[i].w; } sort(0,9); for(i=0;i<10;i++) { if(n>=a[i].w) { sum += a[i].p; n -= a[i].w; } else { sum += (a[i].pw*n); break; } } printf("%d\n",sum); return 0;}
0 0
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- 装船问题
- sdut 装船问题
- 贪心 装船问题
- sdutacm-装船问题
- 剑指offer-----替换空格(java版)
- HDU 2201 熊猫阿波的故事
- 朴素贝叶斯
- [Leetcode] Add Two Numbers
- Python中requests包的安装
- 装船问题
- RESTful最佳实践——一、引言
- 单例模式中的懒汉式和恶汉式
- automake/autoconf
- C++ 5种编程范型
- 安装Eclipse的JavaFX插件
- FFT uoj34 多项式乘法
- 与数据挖掘及推荐引擎相关的开源项目
- DLL两种常用的创建和引用方法