首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[牛客]主持人的烦恼

[牛客]主持人的烦恼

作者头像
@VON
发布2025-12-21 11:49:24
发布2025-12-21 11:49:24
130
举报

题目描述

一天zzq主持一项游戏,共n位同学,需要两两同学为一组来上台来玩一项游戏。

但是,众所周知,玩游戏的时候,如果两个人的颜值差距>=m,就会互相嫌弃。

所以,为了游戏能够好玩。在游戏开始前,zzq已经调查了所有n个同学的颜值。

但是现在问题又来了,zzq想知道,最多能凑出多少组同学一起上台?

需注意一人只能出现在一个组中。

输入描述:

代码语言:javascript
复制
多组输入
第一行两个正整数n m(n<=1e5,m<=1e9),意义见描述
第二行有n个由空格分开的正整数xi(xi<=1e9),第i个同学的颜值

输出描述:

代码语言:javascript
复制
每一行输出一个数,表示最多能凑出多少组。

示例1

输入

代码语言:javascript
复制
4 3
1 3 3 2
4 2
1 4 6 2

输出

代码语言:javascript
复制
2
1

说明

代码语言:javascript
复制
第二组样例中,编号为1的同学(颜值是1)与编号为4的同学(颜值是2),颜值差距为1,可以组成一组

答案展示

代码语言:javascript
复制
#include<bits/stdc++.h>  // 包含 STL 的所有标准库头文件
using namespace std;

int main() {
    int m, n, count = 0;  // 声明 m (整数个数)、n (差值阈值) 和 count (计数器,用于统计符合条件的对数)

    // 循环读取 m 和 n,直到输入结束
    while (cin >> m >> n) {
        vector<int> v;  // 创建一个整型 vector 用于存储输入的整数

        // 读取 m 个整数
        for (int i = 0; i < m; i++) {
            int num;  // 声明临时变量 num
            cin >> num;  // 从输入读取一个整数
            v.push_back(num);  // 将读取的整数添加到 vector v 中
        }

        sort(v.begin(), v.end());  // 对 vector v 中的元素进行排序

        // 遍历排序后的 vector,检查相邻元素的差值
        for (int i = 0; i < m - 1; i++) {
            // 如果相邻元素的差值小于 n,符合条件
            if (v[i + 1] - v[i] < n) {
                count++;  // 满足条件,计数器加一
                i++;  // 跳过下一个元素,避免重复计数
            }
        }

        cout << count << endl;  // 输出符合条件的对数
        count = 0;  // 重置 count 为 0,为下一组输入准备
    }

    return 0;  // 返回 0 表示程序正常结束
}

分布详解

包含头文件
代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
  • 该代码包含了所有的标准库头文件,虽然在实际编码中,建议包含所需的具体头文件,以提高代码的可读性和编译速度。
主函数
代码语言:javascript
复制
int main(){
    int m,n,count=0;
    while(cin>>m>>n){
        vector<int> v;
  • m 表示待处理的整数个数,n 是用于比较的阈值。
  • count 用于统计满足条件的对数。
  • while(cin>>m>>n) 表示程序会一直接收输入,直到输入结束。
输入数据
代码语言:javascript
复制
        for(int i=0; i<m; i++){
            int num;
            cin >> num;
            v.push_back(num);
        }
  • 创建一个 vector<int> 类型的变量 v,用于存储输入的整数。
  • 循环读取 m 个整数,将它们存入 vector v
排序
代码语言:javascript
复制
        sort(v.begin(), v.end());
  • 使用 std::sort 对 vector v 中的元素进行排序,使得相邻元素之间的差值计算更为简单。
计算差值并计数
代码语言:javascript
复制
        for(int i=0; i<m-1; i++){
            if(v[i+1] - v[i] < n){
                count++;
                i++;  // 如果找到了对,就跳过下一个元素,避免重复计数
            }
        }
  • 通过循环遍历排好序的 v,比较相邻元素 v[i+1] 和 v[i] 的差值。
  • 如果差值小于 n,则计数器 count 增加,并将 i 增加一次,以跳过下一个元素,防止将其与当前元素重复计数。
输出结果
代码语言:javascript
复制
        cout << count << endl;
        count = 0;
    }
}
  • 输出满足条件的对数 count
  • 重置 count 为 0,以准备处理下一个输入对。
总结
输入数据
代码语言:javascript
复制
        for(int i=0; i<m; i++){
            int num;
            cin >> num;
            v.push_back(num);
        }
排序
代码语言:javascript
复制
        sort(v.begin(), v.end());
计算差值并计数
代码语言:javascript
复制
        for(int i=0; i<m-1; i++){
            if(v[i+1] - v[i] < n){
                count++;
                i++;  // 如果找到了对,就跳过下一个元素,避免重复计数
            }
        }
输出结果
代码语言:javascript
复制
        cout << count << endl;
        count = 0;
    }
}
总结

该程序的功能是处理多组整数输入,对于每组数据,计算并输出差值小于 n 的相邻整数对的数量。

注意这里的计数逻辑:一旦找到满足条件的一对相邻元素,就会跳过下一个元素,以避免重复计数。

while 循环允许程序处理任意数量的输入,直到输入结束。

包含头文件
代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;

该代码包含了所有的标准库头文件,虽然在实际编码中,建议包含所需的具体头文件,以提高代码的可读性和编译速度。

主函数
代码语言:javascript
复制
int main(){
    int m,n,count=0;
    while(cin>>m>>n){
        vector<int> v;

m 表示待处理的整数个数,n 是用于比较的阈值。

count 用于统计满足条件的对数。

while(cin>>m>>n) 表示程序会一直接收输入,直到输入结束。

创建一个 vector<int> 类型的变量 v,用于存储输入的整数。

循环读取 m 个整数,将它们存入 vector v

使用 std::sort 对 vector v 中的元素进行排序,使得相邻元素之间的差值计算更为简单。

通过循环遍历排好序的 v,比较相邻元素 v[i+1] 和 v[i] 的差值。

如果差值小于 n,则计数器 count 增加,并将 i 增加一次,以跳过下一个元素,防止将其与当前元素重复计数。

输出满足条件的对数 count

重置 count 为 0,以准备处理下一个输入对。

该程序的功能是处理多组整数输入,对于每组数据,计算并输出差值小于 n 的相邻整数对的数量。

注意这里的计数逻辑:一旦找到满足条件的一对相邻元素,就会跳过下一个元素,以避免重复计数。

while 循环允许程序处理任意数量的输入,直到输入结束。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
    • 输入描述:
    • 输出描述:
    • 输入
    • 输出
    • 说明
  • 答案展示
  • 分布详解
    • 包含头文件
    • 主函数
    • 输入数据
    • 排序
    • 计算差值并计数
    • 输出结果
    • 总结
    • 输入数据
    • 排序
    • 计算差值并计数
    • 输出结果
    • 总结
    • 包含头文件
    • 主函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档