• P1016 旅行家的预算


    提高组贪心傻逼题。

    不知道洛谷上的题解是怎么写的。

    看BABA我的思路:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #define il inline
    using namespace std;
    il int gi()
    {
        int x=0,y=1;
        char ch=getchar();
        while(ch<'0'||ch>'9')
        {
            if(ch=='-')
            y=-1;
            ch=getchar();
        }
        while(ch>='0'&&ch<='9')
        {
            x=x*10+ch-'0';
            ch=getchar();
        }
        return x*y;
    }
    struct zhan
    {
        double dist,pri;
    }z[100045];
    double mon[100045];//在每个加油站最便宜多少钱的油 
    int main()
    {
        double all,take,d,p,ans=0,lon;
        scanf("%lf%lf%lf%lf",&all,&take,&d,&p);
        lon=take*d;//每次该加油站最远可以到多远 
        int n;
        cin>>n;
        n++;//把起点加入加油站 
        z[1].dist=0;
        z[1].pri=p;
        for(int i=2;i<=n;i++)
            scanf("%lf%lf",&z[i].dist,&z[i].pri);
        n++;
        z[n].dist=all;
        for(int i=1;i<=n;i++)
        mon[i]=2e8;//赋初值 
        for(int i=1;i<n;i++)
        {
            for(int j=i+1;j<=n;j++)
            {
                if(lon+z[i].dist>=z[j].dist)
                {
                    if(z[i].pri<mon[j])//从每个加油站往后看他能影响的加油站,如果更便宜就更新 
                    mon[j]=z[i].pri;
                }
                else
                break;
            }
        }
        for(int i=2;i<=n;i++)
        if(mon[i]==2e8)//如果有一个加油站到不了 
        {
            printf("No Solution
    ");
            return 0;
        }
        for(int i=2;i<=n;i++)
            ans+=mon[i]*(z[i].dist-z[i-1].dist)/d;//你懂得 
        printf("%.2lf
    ",ans);
        return 0;
    }
    PEACE
  • 相关阅读:
    hdu-3376-Matrix Again(最小费用最大流)
    CF-164C. Machine Programming(最小费用最大流)
    splay模板
    POJ-3580-SuperMemo(splay的各种操作)
    pygame安装
    hg 证书验证失败
    hdu-3487-Play with Chain-(splay 区间翻转,切割,插入)
    jvm 重载 重写
    多线程踩坑
    hashmap时间复杂度
  • 原文地址:https://www.cnblogs.com/gshdyjz/p/7212010.html
Copyright © 2020-2023  润新知