PAT乙级刷题之路1055 集体照 (25分)
1055 集体照 (25分)
拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下:
每排人数为 N/K(向下取整),多出来的人全部站在最后一排;
后排所有人的个子都不比前排任何人矮;
每排中最高者站中间(中间位置为 m/2+1,其中 m 为该排人数,除法向下取整);
每排其他人以中间人为轴,按身高非增序,先右后左交替入队站在中间人的两侧(例如5人身高为190、188、186、175、170,则队形为175、188、190、186、170。这里假设你面对拍照者,所以你的左边是中间人的右边);
若多人身高相同,则按名字的字典序升序排列。这里保证无重名。
现给定一组拍照人,请编写程序输出他们的队形。
输入格式:
每个输入包含 1 个测试用例。每个测试用例第 1 行给出两个正整数 N(≤10^4,总人数)和 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 <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct node { string name; int height;
};
int cmp(struct node a, struct node b)
{ return a.height != b.height ? a.height > b.height : a.name < b.name;
}
int main()
{ int n, k, m; cin >> n >> k; vector<node> stu(n); for(int i = 0; i < n; i++) { cin >> stu[i].name >> stu[i].height; } sort(stu.begin(), stu.end(), cmp); int t = 0, row = k; while(row) { if(row == k) m = n / k + n % k; else m = n / k; vector<string> ans(m); ans[m / 2] = stu[t].name; //中间的人 int j = m / 2 - 1; // 左边的人 for(int i = t + 1; i < t + m; i = i + 2) ans[j--] = stu[i].name; j = m / 2 + 1; // 右边的人 for(int i = t + 2; i < t + m; i = i + 2) ans[j++] = stu[i].name; cout << ans[0]; // 输出当前排 for(int i = 1; i < m; i++) cout << " " << ans[i]; cout << endl; t = t + m; //更新t也就是下一行要输出的人的起始下标row--; } return 0;
}
PAT乙级刷题之路1055 集体照 (25分)相关推荐
- PAT乙级刷题记录——1046 划拳 (15分)
划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒.两人同赢或两人同输 ...
- C++学习之路 | PTA乙级—— 1055 集体照 (25 分)(精简)
1055 集体照 (25 分) 拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下: 每排人数为 N/K(向下取整),多出来的人全部站在最后一排: 后排所有人的个子都不比前排任 ...
- PTA 1055 集体照 (25 分) C++实现
1055 集体照 (25 分) 拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下: 每排人数为 N/K(向下取整),多出来的人全部站在最后一排: 后排所有人的个子都不比前排任 ...
- 【Python】 1055 集体照 (25 分)
1. 题目: 题目地址: https://pintia.cn/problem-sets/994805260223102976/problems/994805272021680128 1055 集体照 ...
- PAT乙级刷题心得和常用函数总结 (c++实现)
开始先说最重要心得体会: 写代码前,先在纸上写写画画,写下伪码,理清思路,别上来就敲代码,效率极低还易出现bug. 2019-12-12到2020-01-17,用C++刷完了PAT乙级95道题目,第6 ...
- PAT乙级刷题/1094 谷歌的招聘/C++实现
一.题目描述 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是 ...
- 【PAT乙级】1055 集体照 (25 分)
题目地址 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; struct node {string name ...
- 【PAT乙级刷题】客似云来
题目描述 NowCoder开了一家早餐店,这家店的客人都有个奇怪的癖好:他们只要来这家店吃过一次早餐,就会每天都过来:并且,所有人在这家店吃了两天早餐后,接下来每天都会带一位新朋友一起来品尝. 于是, ...
- 1109 Group Photo (25分)/1055 集体照 (25分)后三个测试点
这个题目很坏,如果是后三个测试点不对,一定是读题没准确. 题目给的第二个输入变量为行数 M/K等于每行人数(除最后一行) 把这两个搞混了只能过前三个测试点. 题目分析: 关于m/2+1其实没必要,以最 ...
最新文章
- python迭代列表_Python迭代列表中列的元素
- Flex 3 与 Flex 4 beta 之间的区别
- 3dmax高版本转低版本插件_视频编辑干货资料:低版本打开高版本pr文件
- php实现多条件查找分页,Yii2.0框架实现带分页的多条件搜索功能示例
- unigui作中间件使用
- 安装mysql 错误重新安装
- Spring源代码地址
- 高性能的java的ip资源扫描和端口分析
- 拳皇98系列连招—金家潘学习笔记
- 做好自媒体需要具备的几个心态?!
- 总结几点学习模电难的原因
- python编写电子菜单_python 写三级菜单
- java公社博客_Java
- logstash截取指定字符和grok的使用
- C++开发环境配置实验
- 三公到底指太师太傅太保还是…
- POWER8内核加密
- Face++头部姿势headpose参数解析
- 计算机科学专业应届生求职信,计算机科学专业应届生英文求职信范文
- 格林威治时间转换成字符串
热门文章
- excel如何输入公式的技巧
- 7-11 输出大写英文字母 (15 分)
- ベルベット / 贝姐
- cadence 画电路图时出现绿色的倒三角
- 荣耀magic v参数配置
- ubuntu 双显卡安装n卡 Quadro K620 Tesla K80*8 显卡驱动的卸载 (已解决)没有图形界面。黑屏
- 计算机小知识——键盘三颗灯含义
- 快手架构师:3亿日活的快手微服务架构实践
- 计算机主机中负责存储运行中程序的部件,计算机内负责解释执行程序的部件被称为什么_常见问题解析...
- mahout探索之旅---频繁模式挖掘算法与理解