• [NOIP1999] 提高组 洛谷P1016 旅行家的预算


    题目描述

    一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,…,N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。

    输入输出格式

    输入格式:

     

    第一行,D1,C,D2,P,N。

    接下来有N行。

    第i+1行,两个数字,油站i离出发点的距离Di和每升汽油价格Pi。

     

    输出格式:

     

    所需最小费用,计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。

     

    输入输出样例

    输入样例#1:
    275.6 11.9 27.4 2.8 2
    102.0 2.9
    220.0 2.2
    
    输出样例#1:
    26.95

    贪心:

      每次从近到远找遍所有可能到达的加油站。如果有油费比较低的,就先过去;如果没有,就先加满油,然后去最远的加油站

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<cmath>
     6 using namespace std;
     7 struct oil{double dis,p;}a[500];
     8 int cmp(const oil a,const oil b){return a.dis<b.dis;}
     9 double D,v;
    10 double P,C,cn;
    11 double ans=0;
    12 int n;
    13 int main(){
    14     cin>>D>>C>>v>>P>>n;
    15     int i,j;
    16     for(i=1;i<=n;i++)
    17         scanf("%lf%lf",&a[i].dis,&a[i].p);
    18     a[0].dis=0;a[0].p=P;
    19     a[n+1].dis=D;a[n+1].p=0;n++;
    20     sort(a,a+n+1,cmp);
    21     int now=0;cn=0;
    22     while(now<n){
    23         int pos=0;
    24         for(i=now+1;i<=n;i++){
    25             if(a[i].dis-a[now].dis>C*v)break;
    26             pos=i;
    27             if(a[i].p<=a[now].p)break;//有油费更低的就先过去 
    28         }
    29         if(!pos){printf("No Solution
    ");return 0;}
    30         double cost=(a[pos].dis-a[now].dis)/v;
    31         if(a[pos].p>a[now].p){
    32             ans+=(C-cn)*a[now].p;
    33             cn=C-cost;
    34             now=pos;
    35         }
    36         else{
    37             if(cn>=cost){
    38                 cn-=cost;
    39                 now=pos;
    40             }
    41             else{
    42                 ans+=(cost-cn)*a[now].p;
    43                 now=pos;
    44             }
    45         }
    46     }
    47     printf("%.2f
    ",ans);
    48     return 0;
    49 }
  • 相关阅读:
    log4j 日志分级处理
    http接口调用,传递json格式带双引号问题
    测试输出方法执行时间
    关于 propertychange 兼容性问题
    表结构的修改
    固定table表头
    tomcat 的log4j配置问题
    ie 导出不行,不兼容问题,或只出现后缀文件无法识别
    Spring3.x错误----java.lang.ClassNotFoundException:org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
    Spring3.x错误----java.lang.ClassNotFoundException:org.aopalliance.inter.MethodInterceptor
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/5949991.html
Copyright © 2020-2023  润新知