zoukankan      html  css  js  c++  java
  • 三分 --- CSU 1548: Design road

     Design road

    Problem's Link:   http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1548


    Mean: 

    目的:从(0,0)到达(x,y)。但是在0~x之间有n条平行于y轴的河,每条河位于xi处,无限长,wi宽,并分别给出了建立路和桥每公里的单价

    求:到达目标的最小费用。

    analyse:

    比赛的时候一直没想到思路,第二个样列怎么算都算不对,赛后才知道是三分。

    首先把所有的桥移到最右端,然后三分枚举路和河的交点。

    Time complexity: O(logn)

    Source code: 

    //  Memory   Time
    //  1347K     0MS
    //   by : crazyacking
    //   2015-03-30-21.24
    #include<map>
    #include<queue>
    #include<stack>
    #include<cmath>
    #include<cstdio>
    #include<vector>
    #include<string>
    #include<cstdlib>
    #include<cstring>
    #include<climits>
    #include<iostream>
    #include<algorithm>
    #define MAXN 1000010
    #define LL long long
    using namespace std;
    double x,y,c1,c2,sum,xx;
    double calc(double mid)
    {
            double road_cost=sqrt(xx*xx+mid*mid)*c1, bridge_cost=sqrt(sum*sum+(y-mid)*(y-mid))*c2;
            return road_cost+bridge_cost;
    }
    
    double solve(double low,double high)
    {
            double l=low,h=high;
            double mid=(l+h)/2,mmid=(mid+h)/2;
            double cmid=calc(mid),cmmid=calc(mmid);
            while(fabs(cmmid-cmid)>=1e-10)
            {
                    if(cmid>cmmid)
                            l=mid;
                    else
                            h=mmid;
                    mid=(l+h)/2,mmid=(mid+h)/2;
                    cmid=calc(mid),cmmid=calc(mmid);
            }
            return min(cmmid,cmid);
    }
    
    int main()
    {
            int n;
            while(cin>>n>>x>>y>>c1>>c2)
            {
                    sum=0.0;
                    double tmp1,tmp2;
                    for(int i=1;i<=n;++i)
                    {
                            cin>>tmp1>>tmp2;
                            sum+=tmp2;
                    }
                    xx=x-sum;
                    printf("%.2lf
    ",solve(0.0,y));
            }
            return 0;
    }
    View Code

     

  • 相关阅读:
    Python核心技术与实战——十四|Python中装饰器的使用
    Python核心技术与实战——十三|Python中参数传递机制
    GUI学习之三十四——QSS样式表
    数据分析思维(一):数据分析的三种核心思维
    python设计模式
    Docker架构
    云技术
    5G[generation]的知识收集
    计算机网络知识汇总---20191207
    odoo里面的read_group写法
  • 原文地址:https://www.cnblogs.com/crazyacking/p/4379239.html
Copyright © 2011-2022 走看看