zoukankan      html  css  js  c++  java
  • codeforces 864A 模拟

    emmmmmmm……卡了好久啊……看着数据改了好久……

    就……模拟……模拟……我的想法是把每次算来回两次的,这样最后一次的时候就需要特判一下……

    emmmm然后WA了,然后发现,其实……还需要再加两个特判,k=1||k=2;

    智商不够代码来凑的痛……其实好多情况可以合并的……有更简洁的方法的……QAQ

    #include<iostream>
    #include<string>
    #include<string.h>
    #include<cmath>
    #include<algorithm>
    #include<map>
    using namespace std;
    typedef long long ll;
    ll a, b, f, k;
    int main()
    {
        while (cin >> a>>b>>f>>k)
        {
            int cnt = 0;
            if (b < f||b<a-f)  //k==1
            {
                cout << "-1" << endl;
                continue;
            }
            if (k == 1)
            {
                b -= f;
                if (b < (a - f))
                    cnt++;
                cout << cnt << endl;
                continue;
            }
            if (b < 2 * (a - f)) //k==2;
            {
                cout << "-1" << endl;
                continue;
            }int c = b,i;
            if (k == 2)
            {
                b -= f;
                if(b<2*(a-f))
                {
                    b = c;
                    cnt++;
                }
                b -= 2 * (a - f);
                if (b < f)
                {
                    cnt++;
                }
                cout << cnt << endl;
                continue;
            }
            if (b < 2 * f)
            {
                cout << "-1" << endl;
                continue;
            }
            
            b -= f;
            for(i=1;i<k-1;i+=2)
            {
                    if (b < 2 * (a - f))
                    {
                        b = c;
                        cnt++;
                    }
                    b -= 2 * (a - f);
                    if (b < 2 * f)
                    {
                        b = c;
                        cnt++;
                    }
                    b -= 2 * f;
            }
            if (i==k)
            {
                if (b < a-f)
                    cnt++;
                cout << cnt << endl;
            }
            else
            {
                if (b < 2 * (a - f))
                {
                    b = c;
                    cnt++;
                }
                b -= 2 * (a - f);
                if (b < f)
                {
                    b = c; cnt++;
                }
                cout << cnt << endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    Day 18
    Day 17
    Day 16
    Day 15
    Day 14
    Day 13
    Day 12
    Day 11
    Day 10
    《ES6标准入门》(阮一峰)--2.let 和 const 命令
  • 原文地址:https://www.cnblogs.com/Egoist-/p/7597745.html
Copyright © 2011-2022 走看看