• 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;
    }
  • 相关阅读:
    三维形体的表面积
    访问所有点的最小时间
    链式队列
    顺序队列
    链栈
    顺序栈
    双向链表
    pyrhon 开始 基础类型
    GDI+_VB6_ARGB
    WindowsPhone自定义控件详解(一)
  • 原文地址:https://www.cnblogs.com/Egoist-/p/7597745.html
Copyright © 2020-2023  润新知