题解:P11308 茫茫的不归路

· · 题解

思路解析

根据这道题的输出要求,可以想到对应的做法——即数学中常见的分类讨论。

首先思考一下输出Divide的情况。如果说车队人数比车队人数的上限还多,那肯定是无解的。

然后思考一下输出Together的情况。如果无论已经进入的人如何归属,这个车队一定能进入同一个阵营,由于已经排除车队人数比车队人数的上限还多的情况,那么让车队无法进入同一个阵营的最优解就平均分配所有已经在房间中的人,判断人数最少的阵营所剩人数是否放得下整个车队。如果能,那肯定是一定有解的。

最后由于只有三种情况,那如果以上两种情况都不满足,那就一定是第三种输出Chance的情况了。

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int a,b,c,d;
        cin>>a>>b>>c>>d;
        if(c>b)cout<<"Divide"<<endl;
        else if(d/a<=b-c)cout<<"Together"<<endl;
        else cout<<"Chance"<<endl;
    }
}

完结撒花!