Basic Level 1055 集体照 (25分)

2023-11-07

题目

拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下:

每排人数为 N/K(向下取整),多出来的人全部站在最后一排;

后排所有人的个子都不比前排任何人矮;

每排中最高者站中间(中间位置为 m/2+1,其中 m 为该排人数,除法向下取整);

每排其他人以中间人为轴,按身高非增序,先右后左交替入队站在中间人的两侧(例如5人身高为190、188、186、175、170,则队形为175、188、190、186、170。这里假设你面对拍照者,所以你的左边是中间人的右边);

若多人身高相同,则按名字的字典序升序排列。这里保证无重名。

现给定一组拍照人,请编写程序输出他们的队形。

输入格式:

每个输入包含 1 个测试用例。每个测试用例第 1 行给出两个正整数 N ( ≤ 1 0 4 , 总 人 数 ) N(≤10^4 ,总人数) N104和 K(≤10,总排数)。随后 N 行,每行给出一个人的名字(不包含空格、长度不超过 8 个英文字母)和身高([30, 300] 区间内的整数)。

输出格式:

输出拍照的队形。即K排人名,其间以空格分隔,行末不得有多余空格。注意:假设你面对拍照者,后排的人输出在上方,前排输出在下方。

输入样例:

10 3
Tom 188
Mike 170
Eva 168
Tim 160
Joe 190
Ann 168
Bob 175
Nick 186
Amy 160
John 159

输出样例:

Bob Tom Joe Nick
Ann Mike Eva
Tim Amy John

代码:

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 10010;
int N, K;
struct stu{
    string name;
    int high;
}student[MAXN];
bool cmp(stu a, stu b){ return a.high != b.high ? a.high > b.high : a.name < b.name;}
int main(){
    cin >> N >> K;
    for(int i = 0; i < N; i++) cin >> student[i].name >> student[i].high;
    sort(student, student + N, cmp);
    for(int i = K, m = 0, t = 0; i > 0; i--, t += m){
        if(i == K) m = N - N / K * (K - 1);
        else m = N / K;
        vector<string> s(m);
        s[m / 2] = student[t].name;
        for(int j = t + 1, k = m / 2 - 1; j < t + m; j += 2) s[k--] = student[j].name;
        for(int j = t + 2, k = m / 2 + 1; j < t + m; j += 2) s[k++] = student[j].name;
        for(int i = 0; i < m; i++) printf("%s%s", i ? " " : "", s[i].c_str());
        cout << endl;
    }
    return 0;
}

PAT_BasicLevel

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Basic Level 1055 集体照 (25分) 的相关文章

  • 数字货币即将面世 蹭“数字货币”热度套路频现

    随着央行数字人民币逐步在北京 上海等地进入测试阶段 数字货币在我国呼之欲出 与此同时 相关谣言或虚假信息也层出不穷 蹭 数字货币 热度的常见套路都有哪些 一起来看看 在网上签到学习就能提现 近日 某非法平台宣称 该平台系国家为大力发展数字货
  • 循序渐进,学会用pyecharts绘制玫瑰图

    循序渐进 学会用pyecharts绘制玫瑰图 玫瑰图简介 玫瑰图全称南丁格尔玫瑰图 是英国护士和统计学家弗罗伦斯 南丁格尔发明的 又名为极区图 南丁格尔自己常昵称这类图为鸡冠花图 coxcomb 用以表达军医院季节性的死亡率 提供给那些不太

随机推荐

  • adb install 多个设备时指定设备

    在emulator 5554模拟器上安装ebook apk adb s emulator 5554 install ebook apk 在真机上安装ebook apk adb s HT9BYL904399 install ebook apk
  • 可孚医疗:「最懂互联网」的医疗器械企业是如何炼成的?

    如果说钉钉在过去的标签是软件 是低代码 那么在医疗这个赛道里 这些标签已经不足以成为钉钉价值的侧写 除了固有标签之外 在可孚医疗的场景里 钉钉可以连接 可以成为智能BI 也更可以做到内外部协同等 作者 皮爷 出品 产业家 1000分 打开可
  • GetX项目级实战

    在使用了 Provider 一年后 遇到了很多阻力 期间尝试过 BLoC MobX 均不如意 一个样本代码太多 使用复杂 一个生产代码要等很久 难道 Flutter 就没有诸如原生 Android 的 jetpack 套装一样方便的套件吗
  • Cyclic Components CodeForces - 977E(找简单环)

    先求连通块 再看是不是所有连通块的点的度数为2 如果是那就是简单环 只不过我觉得我这个代码时间复杂度还是挺高的 虽然这题没啥问题 不过我看有他人是一遍用dfs找环 一遍判断找到环时的那个点的度数是不是2 AC代码 include
  • ES:一次分片设计问题导致的故障

    现象 1 单节点CPU持续高 2 写入骤降 3 线程池队列积压 但没有reject 4 使用方没有记录日志 排查 1 ES监控 只能看到相应的结果指标 无法反应出原因 2 ES日志 大量日志打印相关异常 routate等调用栈 core a
  • Java是解释型还是编译型语言?

    Java是解释型还是编译型语言 首先JVM是什么 JVM虚拟机也是java的运行环境 因为所有系统平台都支持JVM 所以实现了Java的跨平台 我们可以把JVM虚拟机比作人 有食物供我们食用 当我们需要吃哪种食物的时候就吃哪个实物 在JVM
  • 深度学习笔记(五) 代价函数的梯度求解过程和方法

    作为自己的笔记系列 方便自己查阅和理解 1 什么是梯度 梯度 本意是一个向量 矢量 当某一函数在某点处沿着该方向的方向导数取得该点处的最大值 即函数在该点处沿方向变化最快 变化率最大 为该梯度的模 在二元函数的情形 设函数z f x y 在
  • Linux C中对json格式数组数据的生成与解析

    在网络通信中 数据经常被做成json格式的来进行传输 那么我们怎么在linux系统中去做json格式的数据呢 怎么将接收到的json格式的数据解析出来呢 1 linux json库的安装 1 下载json c源码包 2 解压json c的源
  • Android Studio NDK开发注意

    1 如果JNILibs armeabi中有相应的库文件 编绎重新生成的 so文件不会打包到新的apk中
  • 干掉 “重复代码” 的技巧有哪些?

    软件工程师和码农最大的区别就是平时写代码时习惯问题 码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码 业务同学抱怨业务开发没有技术含量 用不到设计模式 Java 高级特性 OOP 平时写代码都在堆 CRUD 个人成长无从谈
  • UDP包传送字符串实现方法以及方格乱码的出现原因和解决办法

    在使用socket发送udp包传输文本时 由于包中的char型数组是定长的 且其长度大于消息长度 所以其中必有很多空元素 当接收端接收到udp包时进行转码 空元素就会被转码成方块形状的乱码 解决办法 每条消息发送完毕后添加 作为记号 接收后
  • 浏览器渲染机制 (二)浏览器主进程-浏览器内核-浏览器渲染流程

    文章目录 浏览器主进程和浏览器渲染进程的通信过程 浏览器内核 渲染进程 中线程之间的管理 GUI渲染线程与JS引擎线程互斥 JS阻塞页面加载 WebWorker JS的多线程 WebWorker与SharedWorker 总结浏览器渲染流程
  • adb通过网络连接

    1 使用USB数据线连接设备 2 在命令行输入adb tcpip 5555 5555为端口号 可以自由指定 3 断开 USB数据 此时可以连接你需要连接的 USB设备 4 再计算机命令行输入 adb connect lt 设备的IP地址 g
  • 自动计算30天内的股价最高价源代码

    我可以回答这个问题 您可以使用以下代码来计算30天内股价的最高价 复制 import pandas as pd import yfinance as yf 设置股票代码和日期范围 symbol AAPL start date 2021 01
  • Python绝技:运用Python成为顶级黑客

    Python 是一门常用的编程语言 它不仅上手容易 而且还拥有丰富的支持库 对经常需要针对自己所 处的特定场景 以极少的代码量实现所需的功能 Python绝技 运用Python成为顶级黑客结合具体的场景和真 实的案例 详述了 Python
  • 《软件测试的艺术》第三章 代码检查、走查和评审

    软件测试的艺术 第三章 代码检查 走查和评审 3 1 代码检查与走查 3 2 代码检查 3 2 1 代码检查小组 3 2 2 检查议程与注意事项 3 2 3 对事不对人 和人有关的注意事项 3 2 4 代码检查的衍生功效 3 3 用于代码检
  • 100个python算法超详细讲解:农夫过河

    100个python算法超详细讲解 谷哥技术 1 问题描述 一个农夫在河边带了一匹狼 一只羊和一棵白菜 他需要把这三样东西用 船带到河的对岸 然而 这艘船只能容下农夫本人和另外一样东西 如果农夫 不在场的话 狼会吃掉羊 羊也会吃掉白菜 请编
  • 鸿蒙内核阅读笔记-定时器

    鸿蒙内核阅读笔记 定时器 简介 核心模块 定时器 los swtmr c 介绍 阅读代码 函数部分 简介 近期在阅读鸿蒙liteOS a 由于是初次探索内核的奥秘 将一些阅读的心得进行分享 希望能在作为笔记的同时 也能帮助更多人学习 感谢图
  • springboot + eureka集群,实现注册中心,实现负载均衡

    搭建eureka集群 新建一个boot项目 File new project 如图选择 next 起名字如下 gt next finish 新建3个注册中心 以三个注册中心为例 想多的自己加 项目名字上 new module next 起名
  • Basic Level 1055 集体照 (25分)

    题目 拍集体照时队形很重要 这里对给定的 N 个人 K 排的队形设计排队规则如下 每排人数为 N K 向下取整 多出来的人全部站在最后一排 后排所有人的个子都不比前排任何人矮 每排中最高者站中间 中间位置为 m 2 1 其中 m 为该排人数