一个简单做法

过山车

http://www.nowcoder.com/questionTerminal/065abfa6dfa34860b81cfbb0ab24ebda

我百愁莫展之时,看了题解,发现思路跟我的基本一样,除了long long。
要long long!
要long long!
要long long!
重要的事情说三次。
首先的n==k||k==0,读者自证不难。
接下来是最小的情况:
由于n>=k
经过上面的筛选,下面肯定有n<k了
接着我们进行模拟,到底一个人的旁边最多能坐多少个人
首先从k==1开始,010,最多2个
k==2,010010,最多4个
......
k=t,最多2t个
然后,我们就需要考虑了,在最多能坐2
k的情况下,必须有3k<=n
然后当3
k>n时,

  • 由于过山车的位置不够,且此时本应该都坐满了人,那我们只需要把不够的过山车的位置去掉,这部分位置为(3k-n)个
    然后2
    k-(3*k-n)=n-k,即为所得
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <vector>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    int main()
    {
    long long n,k;
    cin>>n>>k;
    if(n==k||k==0)
    cout<<"0 0"<<endl;
    else if(3*k<=n)
    cout<<"1 "<<2*k<<endl;
    else
    cout<<"1 "<<n-k<<endl;
    return 0;
    }
全部评论

相关推荐

牛客38347925...:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:25
点赞 评论 收藏
分享
评论
11
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务