• 【codeforces 534B】Covered Path


    【题目链接】:http://codeforces.com/contest/534/problem/B

    【题意】

    你在t秒内可以将车的速度任意增加减少绝对值不超过d;
    然后要求在一开始车速为v1,t秒之后车速变为v2;
    问你这段t时间内,车最多能行驶多远。

    【题解】

    枚举车“最大速度”v
    看看车到达这个速度之后,然后回到速度v2(也就是说v是可能小于v2的,所以最大速度加了引号”)看看可不可行;
    如果能在到达最大速度之后又回到速度v2(在t时间内);
    那么记下回到v2的时间t1
    在到达v和回到v2这段时间内的位移+(t-t1)*max(v,v2)就是答案了

    【完整代码】

    #include <bits/stdc++.h>
    using namespace std;
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define LL long long
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    #define rep2(i,a,b) for (int i = a;i >= b;i--)
    #define mp make_pair
    #define pb push_back
    #define fi first
    #define se second
    #define rei(x) scanf("%d",&x)
    #define rel(x) scanf("%lld",&x)
    #define ref(x) scanf("%lf",&x)
    
    typedef pair<int, int> pii;
    typedef pair<LL, LL> pll;
    
    const int dx[9] = { 0,1,-1,0,0,-1,-1,1,1 };
    const int dy[9] = { 0,0,0,-1,1,-1,1,-1,1 };
    const double pi = acos(-1.0);
    const int N = 110;
    
    int v1, v2, t, d,ans = 0;
    
    int main()
    {
        //freopen("F:\rush.txt", "r", stdin);
        rei(v1), rei(v2), rei(t), rei(d);
        rep1(v, v1, v1 + t*d)
        {
            int temp = 0;
            int now = 0, vv = v1;
            while (vv < v)
            {
                temp += vv;
                vv += d;
                vv = min(vv, v);
                now++;
                if (now > t)
                    break;
            }
            if (now > t) continue;
            if (vv < v2)
            {
                while (vv < v2)
                {
                    temp += vv;
                    vv += d;
                    vv = min(vv, v2);
                    now++;
                    if (now > t)
                        break;
                }
                if (now > t)
                    continue;
                now++;
                temp += vv;
            }
            else
                if (vv > v2)
                {
                    while (vv > v2)
                    {
                        temp += vv;
                        vv -= d;
                        vv = max(vv, v2);
                        now++;
                        if (now > t)
                            break;
                    }
                    if (now > t)
                        continue;
                    now++;
                    temp += vv;
                }
                else
                    if (vv == v2)
                    {
                        now++;
                        temp += vv;
                    }
            temp += max(v, vv)*(t - now);
            ans = max(ans, temp);
        }
        printf("%d
    ", ans);
        //printf("
    %.2lf sec 
    ", (double)clock() / CLOCKS_PER_SEC);
        return 0;
    }
  • 相关阅读:
    华为设备SNMP配置
    Linux CP直接覆盖快速操作
    CentOS7快速安装PHP7.0指南
    Linux SSH免密码登录配置
    this的指向
    分页的模块layui
    multer中间件
    ajax实现图片上传
    MVC模式、加密、jsonwebtoken
    mongoose与express
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626512.html
Copyright © 2020-2023  润新知