当前位置: 首页 > article >正文

【LGR-208-Div.3】洛谷基础赛 #18 P11308 茫茫的不归路

题目背景

NoitaCesaE 的匹配机制总是很奇怪,小 ζ 总是被匹配到与他的其他车队成员不同的阵营,这时他就没法享受被优质队友带飞的快感了。

题目描述

具体的,有 n 个阵营,每个阵营最多 m 人。已经有 p 个人被分配了所属的阵营,且此时每个阵营人数均不超限。

小 ζ 的 k 人车队进入了这个房间,在不改变已经进入的 p 个人的所属阵营的情况下,如果他们能一起进入同一个阵营使得阵营人数不超过限制,那么就会进入同一个阵营,否则车队就分散进不同的阵营了。

请求出对于给定的 n,m,k,p,任意的已经进入的 p 个人的阵营归属情况下,小 ζ 的车队能够进入同一个阵营的可能性情况(具体参见输出格式)。

输入格式

本题多测,第一行输入一个整数 T,代表这个测试点内有 T 组数据。

对于每组数据:

一行四个整数 n,m,k,p,含义见题目描述。

输出格式

对于每组数据,输出以下三种情况之一:

  • Together 表示无论已经进入的人如何归属,这个车队一定能进入同一个阵营;

  • Chance 表示存在一部分已经进入的人的阵营归属情况,使得这个车队的所有人进入同一个阵营;

  • Divide 表示无论已经进入的人如何归属,这个车队的所有人必然进入不同的阵营。

输入输出样例

输入 #1

10
3 3 3 1
3 3 4 5
4 4 4 12
4 4 3 8
10 10 7 34
10 10 8 34
12 11 11 12
12 11 12 12
9 9 1 80
9 9 6 70

输出 #1

Together
Divide
Chance
Chance
Together
Chance
Chance
Divide
Together
Chance

说明/提示

【样例 1 解释】

对于第一组数据,无论这个人在哪个阵营,都有至少两个阵营为空,因此一定可以容纳这个 3 人车队,故输出 Together

【数据规模与约定】

对于 40% 的数据,T≤10,n,m≤4,k≤6,p≤10。

对于另 20% 的数据,保证输出没有 Together

对于 100% 的数据,1≤T≤1000,1≤n,m≤10^4,1≤k≤10^8,0≤p≤10^8,p+k ≤ n*m。


#include <iostream>
using namespace std;

//定义一个二维数组B,用于存储T组测试数据,大小为1000行4列,并初始化为0
int B[1000][4] = { 0 };

int main()
{
    //定义变量T,用于存储输入的测试数据组数
    int T;
    //从标准输入读取测试数据组数
    cin >> T;

    //定义循环变量i和j,用于控制后续的循环操作
    int i, j;

    //外层循环,根据输入的测试数据组数T进行循环
    for (i = 0; i < T; i++)
    {
        //内层循环,用于读取每组中的4个数据(n,m,k,p),并存入二维数组B的相应位置
        for (j = 0; j < 4; j++)
            cin >> B[i][j];
    }

    //再次外层循环,遍历每组
    for (i = 0; i < T; i++)
    {
        //判断条件,如果满足该条件
        if (B[i][2] + B[i][3] / B[i][0] <= B[i][1])
        {
            //输出"Together"
            cout << "Together" << "\n";
            //直接进入下一次循环,跳过后续当前循环体内的代码
            continue;
        }

        //另一个判断条件,如果同时满足这两个条件→
        //用p将部分阵营排满之后,剩下的空位多余k,且阵营最大人数m要大于k
        if ((B[i][0] * B[i][1] - B[i][3] >= B[i][2]) && B[i][1] >= B[i][2])
        {
            //输出"Chance"
            cout << "Chance" << "\n";
            //直接进入下一次循环,跳过后续当前循环体内的代码
            continue;
        }
        else
            //如果上述条件都不满足,输出"Divide"
            cout << "Divide" << "\n";
    }
    return 0;
}

 


http://www.kler.cn/a/407200.html

相关文章:

  • 实际工程里为什么不用面向过程编程而是用面向对象编程
  • 开源宝藏:Smart-Admin 重复提交防护的 AOP 切面实现详解
  • Kafka - 消费者程序仅消费一半分区消息的问题
  • Android Google登录接入
  • MATLAB GUI设计(基础)
  • Day 18
  • 2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略(详细解题思路)
  • 【jvm】new对象的过程
  • 活着就好20241124
  • Ansys Zemax Optical Studio 中的近视眼及矫正
  • 项目实战:基于Vue3实现一个小相册
  • mips架构下编译nginx-rtmp
  • 分类算法——基于heart数据集实现
  • 读取mysql、kafka数据筛选后放入mysql
  • 纯前端js完成游戏吃豆人
  • Rust 力扣 - 746. 使用最小花费爬楼梯
  • redis的大key和热key问题解决方案
  • 数据结构--B树
  • 电机绕组短路故障如何维修?
  • 常见面试题----深入源码理解MQ长轮询优化机制
  • 电脑系统重装小白教程
  • 开源宝藏:Smart-Admin 重复提交防护的 AOP 切面实现详解
  • 编程之路,从0开始:文件操作(1)
  • 如何在Python中进行数学建模?
  • python c++ opencv打开图片路径写法
  • RK356x-10:串口(uart)配置与调试