蓝桥杯-快乐司机

简介: 话说现在当司机光有红心不行,还要多拉快跑。多拉不是超载,是要让所载货物价值最大,特别是在当前油价日新月异的时候。

问题描述

  "嘟嘟嘟嘟嘟嘟

  喇叭响

  我是汽车小司机

  我是小司机

  我为祖国运输忙

  运输忙"

 这是儿歌“快乐的小司机”。话说现在当司机光有红心不行,还要多拉快跑。多拉不是超载,是要让所载货物价值最大,特别是在当前油价日新月异的时候。司机所拉货物为散货,如大米、面粉、沙石、泥土......

  现在知道了汽车核载重量为w,可供选择的物品的数量n。每个物品的重量为gi,价值为pi。求汽车可装载的最大价值。(n<10000,w<10000,0<gi<=100,0<=pi<=100)


输入格式

  输入第一行为由空格分开的两个整数n w

  第二行到第n+1行,每行有两个整数,由空格分开,分别表示gi和pi

输出格式

  最大价值(保留一位小数)

样例输入

      5 36

      99 87

      68 36

      79 43

      75 94

      7 35

样例输出

      71.3

      解释:

      先装第5号物品,得价值35,占用重量7

     再装第4号物品,得价值36.346,占用重量29

     最后保留一位小数,得71.3

思路: 将价值/质量存起来,每次质量减去价值比最高的,即为最优解

#include <stdio.h>
int main(){
  int n;
  int i=0,j,l=0;
  int a[10000],b[10000];
  double s[10000],p=0,q=0,w;
  scanf ("%d%lf",&n,&w);
  for (i=0;i<n;i++)
  {
  scanf ("%d%d",&a[i],&b[i]);
  s[i]=b[i]*1.0/a[i];
  }
  while (w!=0)
{ 
  p=0;
  l=9999;
  for (i=0;i<=n;i++)
{
  if (a[i]==999)
  continue;
  if (p<s[i])
  {
  p=s[i];
  l=i;  
  }
}
  if (w>=a[l])
  {
  w-=a[l];
  q+=b[l];}
  else
  {
  q+=w*s[l];
  w-=w;
  }
  a[l]=999;
  }
 printf("%.1f",q);
 return 0;
}
目录
相关文章
|
机器学习/深度学习 定位技术 数据格式
【蓝桥杯】每日一题17天冲刺国赛
【蓝桥杯】每日一题17天冲刺国赛
379 0
【蓝桥杯】每日一题17天冲刺国赛
【寒假每日一题】AcWing 4455. 出行计划
目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 差分与前缀和
88 0
|
7月前
|
API
生活 | 七夕快乐!
今天是中国的七夕节!那就简单的祝大家情人节快乐!没有对象的自己new一个,或者画一个。
|
12月前
|
机器学习/深度学习 C++
蓝桥杯C++小朋友崇拜圈
蓝桥杯C++小朋友崇拜圈
71 0
|
Python
(蓝桥云课)「蓝桥杯赛前急救」简单填空题秒杀拿分技巧
(蓝桥云课)「蓝桥杯赛前急救」简单填空题秒杀拿分技巧
61 0
|
前端开发 小程序 Java
1024特刊|要不是家里穷,我也不想当码农
三掌柜有一句说的好:要不是家里穷,我也不想当码农;要不是家里没矿,我也不想四处流浪。
623 1
1024特刊|要不是家里穷,我也不想当码农
|
存储 人工智能
【蓝桥杯】每日一题冲刺国赛
🥇数字三角形 🥈等差数列 🥉包子凑数
【蓝桥杯】每日一题冲刺国赛
换零钞[蓝桥杯2018决赛]
x星球的钞票的面额只有:100元,5元,2元,1元,共4种。 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。 小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍,剩下的当然都是5元面额的。 银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗?
换零钞[蓝桥杯2018决赛]
|
算法 C++
蓝桥杯十天冲刺计划
蓝桥杯十天冲刺计划