PAT甲题题解-1109. Group Photo (25)-(模拟拍照排队)
题意:n个人,要拍成k行排队,每行 n/k人,多余的都在最后一排。
从第一排到最后一排个子是逐渐增高的,即后一排最低的个子要>=前一排的所有人
每排排列规则如下:
1.中间m/2+1为该排最高;
2.其他人按各自降序顺序,轮流排到中间最高的左边和右边;
举个例子 190 188 186 175 170
— — 190 — —
— 188 190 — —
— 188 190 186 —
175 188 190 186 —
175 188 190 186 170
3.当个子一样高时,名字按字典序顺序,靠前的先排入队伍。
纯粹模拟,没啥好说的。
#include <iostream>
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
const int maxn=+; struct People{
char str[];
int height;
bool operator<(const People tmp)const{
if(height==tmp.height){
if(strcmp(str,tmp.str)<)
return false;
else
return true;
}
else{
return height<tmp.height;
}
}
}people[maxn];
int main()
{
int k,n;
scanf("%d %d",&n,&k);
int ans[k+][maxn];
int cols[k+];
for(int i=;i<n;i++){
scanf("%s %d",people[i].str,&people[i].height);
}
sort(people,people+n); int m=n/k;
int left,right;
for(int i=;i<=k;i++){
left=(i-)*m;
right=i*m-;
if(i==k){
m=n-(k-)*m;
right=n-;
}
cols[i]=m;
int center=m/+;
int idx=right;
ans[i][center]=idx;
idx--;
int l=center-,r=center+;
while(r<=m){
ans[i][l]=idx;
idx--;
ans[i][r]=idx;
idx--;
l--;r++;
}
if(l==)
ans[i][]=idx;
}
for(int i=k;i>=;i--){
for(int j=;j<=cols[i];j++){
if(j==){
printf("%s",people[ans[i][j]].str);
}
else{
printf(" %s",people[ans[i][j]].str);
}
}
printf("\n");
}
return ;
}
PAT甲题题解-1109. Group Photo (25)-(模拟拍照排队)的更多相关文章
- PAT甲题题解-1016. Phone Bills (25)-模拟、排序
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789229.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1051. Pop Sequence (25)-堆栈
将1~n压入最多为m元素的栈 给出k个出栈序列,问你是否能够实现. 能输出YES 否则NO 模拟一遍即可,水题. #include <iostream> #include <cstd ...
- PAT甲题题解-1059. Prime Factors (25)-素数筛选法
用素数筛选法即可. 范围long int,其实大小范围和int一样,一开始以为是指long long,想这就麻烦了该怎么弄. 而现在其实就是int的范围,那难度档次就不一样了,瞬间变成水题一枚,因为i ...
- PAT甲题题解-1101. Quick Sort (25)-大水题
快速排序有一个特点,就是在排序过程中,我们会从序列找一个pivot,它前面的都小于它,它后面的都大于它.题目给你n个数的序列,让你找出适合这个序列的pivot有多少个并且输出来. 大水题,正循环和倒着 ...
- PAT甲题题解-1117. Eddington Number(25)-(大么个大水题~)
如题,大水题...贴个代码完事,就这么任性~~ #include <iostream> #include <cstdio> #include <algorithm> ...
- PAT甲题题解-1130. Infix Expression (25)-中序遍历
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789828.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1129. Recommendation System (25)-排序
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789819.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1021. Deepest Root (25)-dfs+并查集
dfs求最大层数并查集求连通个数 #include <iostream> #include <cstdio> #include <algorithm> #inclu ...
- PAT甲题题解-1024. Palindromic Number (25)-大数运算
大数据加法给一个数num和最大迭代数k每次num=num+num的倒序,判断此时的num是否是回文数字,是则输出此时的数字和迭代次数如果k次结束还没找到回文数字,输出此时的数字和k 如果num一开始是 ...
随机推荐
- 通过sqli-labs学习sql注入——基础挑战之less1-3
首先,先看一些基础知识吧!!!!本人只是初学者,记录一下自己的学习过程,有什么错误之处请指出,谢谢!大佬请绕过!!!! url编码:一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加 ...
- 笔记本键盘开关方法 仅限window系统
按win键,搜索CMD(命令提示符).右键-以管理员身份运行.关闭笔记本键盘输入:sc config i8042prt start= disabled回车-重启电脑即可.需要重新启用键盘的话,输入:s ...
- 第二次SDN上机作业
SDN第二次作业 1.安装floodlight fatter树在floodlight上的连接显示 2.生成拓扑并连接控制器floodlight,利用控制器floodlight查看图形拓扑 floodl ...
- Netty入门(四)ByteBuf 字节级别的操作
Netty 中使用 ByteBuf 代替 Java NIO 提供的 ByteBuffer 作为字节的容器. 一.索引 ByteBuf 提供两个指针变量支持读和写操作,读操作使用 readerInde ...
- redis性能测试工具的使用
在redis安装完成后会生成一个bin的目录,在这个目录中有一个 redis-benchmark 的文件脚本工具,通过执行这个工具进行redis的性能测试. bash #执行这个脚本后脚本会自动运行r ...
- layui 弹出层监听 判断弹出框的大小
if ($.PublicIsMobile($(window).width())) { var layerInitWidth = $("#layui-layer" + ly_dtxm ...
- C#游戏开发中精确的时间调配
方法一:参考<精通C#游戏编程>一书.根据学习WorldWind源码可知,WorldWind中采用的方法与该方法基本一致. using System; using System.Colle ...
- JAVA 对基础知识的加强
一.我们在写类的时候.设置字段的时候含义: 简单的javabean类: package jd.com.vo; import jd.com.mybaitstest.account; public cla ...
- 浅谈 DNS
一.DNS(Domain Name System,域名系统) 概念:万维网(WWW是环球信息网的缩写,亦作“Web”.“WWW”.“'W3'”,英文全称为“World Wide Web”),作为域名和 ...
- (转)JVM调优常用命令(jstat、jmap、jstack)
原文:https://www.cnblogs.com/ityouknow/p/5714703.html 一.jstat jstat(JVM statistics Monitoring)是用于监视虚拟机 ...