题解 | #过山车#

过山车

https://ac.nowcoder.com/acm/problem/22237

代码中的n/2以及n/3的由来:当k=n/2的临界情况时,代码注释部分已经做了详细的说明;当k远小于n时,对k进行每个人隔两个空的排列,这样max=1+(k-1)*2+1=2k,临界情况,max+k=n,则k=n/3 ;继而当n/3<k<n/2时,排列时要注意必然会有两个人之间只隔一个空位,则 max=1+(k-1)*2+1-1=2k-1;最后确定不管n为奇数还是偶数都无误

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,k;
    cin>>n>>k;
    int min=0,max=0;     //结果初始化
    if(k>=n || k==0){    //如果超员或者根本没人直接返回 0 0
        cout<<min<<" "<<max<<endl;  
    }else{
        min = 1;         //k<n min必然为1
        if(k>=n/2) max=n-k;   //当已经上车人数超过一半时,对已经上车的人均匀分配,剩下的空位必然都可以坐
        else if(k<n/2 && k>n/3) max=2*k-1;  
        else max=2*k;
        cout<<min<<" "<<max;
    }
    
}
全部评论
国庆哥你真拉,抱歉走错片场了
点赞 回复 分享
发布于 2021-12-24 10:28

相关推荐

12-24 20:49
武汉大学 Java
点赞 评论 收藏
分享
11-22 02:49
已编辑
天津理工大学 golang
爱蜜莉雅碳也想进大厂:边学边背八股吧,时间很紧张,最主要的是暑期基本明年3月就开了,你试试看先花两个月速成,看能不能小厂实习或者无实习找暑期(虽然很难感觉)
双非本科求职如何逆袭
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

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