• Codeforces Round #364 (Div. 1)(vp) 没什么题解就留坑待填


    我就做了前两题,第一题第一次vp就把我搞自闭跑路了,第二题第二次又把我搞自闭了

    A. As Fast As Possible

    细节题

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    
    int n,k; double L,v1,v2;
    bool check(double T)
    {
        int u=0; double p=0,b=0,t=0;
        u+=k;
        double ct=(L-v1*T)/(v2-v1);//需要公交带多久才能到结束位置 
        if(ct<0)return true;
        t+=ct;
        if(t>T)return false;
        p+=v1*ct;
        b+=v2*ct;
        
        while(u<n)
        {
            ct=(b-p)/(v1+v2);//相遇要多久 
            t+=ct;
            if(t>T)return false;
            p+=v1*ct;
            b=p;
            
            u+=k;
            ct=(L-p-v1*(T-t))/(v2-v1);
            if(ct<0)return true;
            t+=ct;
            if(t>T)return false;
            p+=v1*ct;
            b+=v2*ct;
        }
        return true;
    }
    int main()
    {
        scanf("%d%lf%lf%lf%d",&n,&L,&v1,&v2,&k);
        long double l=0,r=L;
        while(r-l>1e-8)
        {
            long double mid=(l+r)/2.0;
            if(check(mid))r=mid;
            else l=mid;
        }
        printf("%.8Lf
    ",l);
        
        return 0;
    }
    A. As Fast As Possible

    B. Connecting Universities

    这个贪心题做着做着就懵逼了。。。

    有三个做法,其一是按dfs序排序。第i个和第i+k个直接匹配,稍微画画图就是对的

    第二是考虑每一条边,这条边最多被经过左右两端关键点数的min

    第三是一个节点如果其最多关键点的孩子子树不超过k,那么所有的边都可以两两配对,找到这个点,答案就是所有关键到这个点的和

    懒得复制代码了,都很好写

  • 相关阅读:
    【移动开发】Android应用程序中实用的代码框架(二)
    使用ListView应该注意的地方
    使用ListView应该注意的地方
    web技术文章
    [LeetCode] 565. Array Nesting
    [LeetCode]495. Teemo Attacking
    south 命令学习
    关于access_token过期的解决办法
    决策树总结《一》.md
    crontab命令
  • 原文地址:https://www.cnblogs.com/AKCqhzdy/p/10710122.html
Copyright © 2020-2023  润新知