zoukankan      html  css  js  c++  java
  • 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,那么所有的边都可以两两配对,找到这个点,答案就是所有关键到这个点的和

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

  • 相关阅读:
    清除浮动的方法
    手机端横竖屏切换,怎么做才能安卓浏览器及时改变字体大小
    css z-index之object flash修正
    解决Flash挡住层用z-index无效的问题
    css垂直居中
    自定义selsct
    基础导航条
    按钮下拉菜单
    pandas的使用
    数据分析、人工智能开篇
  • 原文地址:https://www.cnblogs.com/AKCqhzdy/p/10710122.html
Copyright © 2011-2022 走看看