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;
}
原文地址:https://www.cnblogs.com/Egoist-/p/7597745.html