专栏文章

P11308 茫茫的不归路 题解

P11308题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mir04a77
此快照首次捕获于
2025/12/04 13:34
3 个月前
此快照最后确认于
2025/12/04 13:34
3 个月前
查看原文

题目分析

对于每组数据,我们来分别讨论以下三种情况:
  • 第一种情况是无论已经进入的人如何归属,这个车队一定能进入同一个阵营。那么我们就想一下最坏情况,最坏情况就是每个阵营中的数量相同,如果这时候数量最少的阵营中还能让这个车队全部进入,那么就可以输出 Together
  • 第二种情况是存在一部分已经进入的人的阵营归属情况,使得这个车队的所有人进入同一个阵营。这种情况可以分两种可能:第一种是每个阵营全都分满,如果最后有剩余的阵营并且车队人数小于等于 nn 那么就可以直接进入,输出 Chance;第二种是每一个阵营都有人,并且只有一个阵营没有分满,那么只需要判断一下 kk 与剩余的人数的和是否小于等于 nn,如果是的话就可以输出 Chance
  • 第三种情况是无论已经进入的人如何归属,这个车队的所有人必然进入不同的阵营。如果以上两种情况都不满足的话,那就是这种了,直接输出 Divide
考虑完以上这三种情况之后这道题就做完了。

代码

CPP
#include <bits/stdc++.h>
using namespace std;

signed main()
{
	int T;
	cin >> T;
	while (T--)
	{
		int n, m, k, p;
		cin >> n >> m >> k >> p;
		if (k <= m - p / n)
		{
			cout << "Together\n";
		}
		else if (p / m < n && k <= m || p / m == n && p % m + k <= m)
		{
			cout << "Chance\n";
		}
		else
		{
			cout << "Divide\n";
		}
	}
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...