• QFNU-ACM 2020.10.23


    C

    题意:给定路程为a,油量为b,加油站为f,进行k次路程,问进行k次路程需要加几次油。

    题解:先要判断下第一次和最后一次,然后根据f*2和(a-f)*2判断x有没有大于它,再根据奇数次还是偶数次用f*2和a-f*2判断。

    代码:

    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    #include<string>
    #include<algorithm>
    #include<queue>
    #include<functional>
    typedef long long LL;
    #define maxn 300005
    using namespace std;
    vector<int>arr[maxn];
    LL n, a, b, k, f,flag,ans,d1,d2,mark,now;
    int main()
    {
        cin >> a >> b >> f >> k;
        d1 = f, d2 = a - f;
        mark = 1;
        now = b;
        while (k&&!flag)
        {
            if (mark%2)
            {
                if (now < d1)
                {
                    flag = 1;
                    break;
                }
                else
                {
                    now -= d1;
                    if (now < 2 * d2&&k!=1)
                    {
                        if (b < d2)
                        {
                            flag = 1;
                            break;
                        }
                        else
                        {
                            now = b - d2;
                            ans++;
                        }
                    }
                    else if (k == 1)
                    {
                        if (now < d2)
                        {
                            if (b < d2)
                            {
                                flag = 1;
                                break;
                            }
                            else
                            {
                                ans++;
                            }
                        }
                    }
                    else if (now >= d2*2)
                    {
                        now -= d2;
                    }
                }
            }
            else
            {
                if (now < d2)
                {
                    flag = 1;
                    break;
                }
                else
                {
                    now -= d2;
                    if (now < d1 * 2 && k != 1)
                    {
                        if (b < d1)
                        {
                            flag = 1;
                            break;
                        }
                        else
                        {
                            ans++;
                            now = b - d1;
                        }
                    }
                    else if (k == 1)
                    {
                        if (now < d1)
                        {
                            if (b < d1)
                            {
                                flag = 1;
                                break;
                            }
                            else
                            {
                                ans++;
                            }
                        }
                    }
                    else if (now >= 2 * d1)
                    {
                        now -= d1;
                    }
                }
            }
            mark++;
            k--;
        }
        if (!flag)
            cout << ans << endl;
        else
            cout << -1 << endl;
        return 0;
    }
  • 相关阅读:
    四层和七层负载均衡的区别-转
    MySQL高可用方案一(MHA)
    EC2.0开启多规格后,编辑无法获取规格数据
    PHP中取出字符串中的空格 逗号
    ECSTORE1.2 重启开启信任登陆模块(删除KEY)
    云体检通用代码补丁
    zendguard安装破解
    MySQL历史版本下载(官方)
    linux watch命令
    python判断值是否为空
  • 原文地址:https://www.cnblogs.com/liyongqi/p/13911840.html
Copyright © 2020-2023  润新知