“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。

输入格式:

输入第一行给出正偶数N(≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。

输出格式:

每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。

输入样例:

8
0 Amy
1 Tom
1 Bill
0 Cindy
0 Maya
1 John
1 Jack
0 Linda

输出样例:

Amy Jack
Tom Linda
Bill Maya
Cindy John

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

思路分析:

由题目不难得到我们需要一个容器来容纳一个int值(0或1)代表性别和一个string值来表示名字,

同时需要一个变量n来决定输入多少行(利用for循环解决);

最开始是打算利用map容器来进行解决的,但是后面发现使用map的话,键值必须是一个string类型,在后续操作上显然很麻烦,所以最后改用了一个结构体数组进行解决。

struct{int a;string b;   }stu[n];//建立一个大小为n的结构体数组

由题目要求,必须是让名次靠前的辅导名次靠后的,而且还得是异性同学(关于这个会不会导致早恋问题emmm,仁者见仁智者见智吧)。

首先利用一个for循环输入数据。

 for(int i=0;i<n;i++){cin>>stu[i].a>>stu[i].b;}

然后遍历结构体数组stu,利用双指针算法,一个指向数组最开端,一个指向数组最末端,进行判断,如果两个性别不同且性别值就按照格式打印出来,同时把后面指针所指向的性别值置为3,令前面的指针向后移动,后面的指针指向数组的最后,否则令指向后面的指针向前移动。

for(int i=0,j=n-1;i<j;){if(stu[i].a!=stu[j].a&&stu[j].a!=3){cout<<stu[i].b<<" "<<stu[j].b<<endl;stu[j].a=3;i++;j=n-1;}else j--;}

显然时间复杂度为O(n);

代码:

#include <bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;struct{int a;string b;   }stu[n];for(int i=0;i<n;i++){cin>>stu[i].a>>stu[i].b;}for(int i=0,j=n-1;i<j;){if(stu[i].a!=stu[j].a&&stu[j].a!=3){cout<<stu[i].b<<" "<<stu[j].b<<endl;stu[j].a=3;i++;j=n-1;}else j--;}}

运行结果:

L1-030 一帮一(c++实现)相关推荐

  1. 团体程序设计天梯赛-练习集-java

    java不一定能都过 有星号*的都是我java过不去的 但是代码思路都是对的 如果需要c++的 可以留言 L1 L2 L3 001 Hello World 紧急救援 凑零钱 002 打印沙漏 链表去重 ...

  2. 80页笔记看遍机器学习基本概念、算法、模型,帮新手少走弯路

    来源:机器之心 本文约1000字,建议阅读6分钟. 这份学习笔记帮你及时回顾机器学习概念,带你快速上手. [ 导读 ]目前有关机器学习的资料可谓层出不穷,其中既有书籍.课程视频资料,也有很多算法模型的 ...

  3. 新手必看的编程介绍,帮你推荐学习方案!

    新手必看的编程介绍,帮你推荐学习方案! VB是什么? ) y0 {6 G# G; j3 B VB 是Visual Basic编程语言 * B. O2 G# z) O1 |- g8 `4 ^ 编写计算机 ...

  4. pytorch实现L2和L1正则化regularization的方法

    pytorch实现L2和L1正则化的方法 目录 目录 pytorch实现L2和L1正则化的方法 1.torch.optim优化器实现L2正则化 2. 如何判断正则化作用了模型? 2.1 未加入正则化l ...

  5. 在tensorflow框架下添加正则化约束l1、l2的方法

    一.基础正则化函数 tf.contrib.layers.l1_regularizer(scale, scope=None) 返回一个用来执行L1正则化的函数,函数的签名是func(weights).  ...

  6. 一文帮你理解模型选择方法:AIC、BIC和交叉验证!

    一文帮你理解[模型选择方法]:AIC.BIC 和交叉验证! 本文先讲透模型选择的基本思想,再逐一叙述几种比较典型和常用的模型选择方法,希望可以帮助你理解. 一.模型选择的基本思想 模型选择的核心思想就 ...

  7. 天梯赛L1(1-80)

    目录 L1-001 Hello World L1-002 打印沙漏 L1-003 个位数统计 L1-004 计算摄氏温度 L1-005 考试座位号 L1-006 连续因子 L1-007 念数字 L1- ...

  8. 打工人的「周游世界」,AI算法帮你实现,泪目!

    一.前言 大家好,我是 Jack . 最近又有一个算法火了,不知道你们看到没?直接看效果! 打工人的「周游世界」,AI 算法帮你实现. 效果这么稳定的人像 Image Matting算法真的不多,并且 ...

  9. 2021/4/24团队设计天梯赛L1题目集及题解

    2021/4/24团队设计天梯赛L1题目集及题解: 以下题解都是通过PTA测试的,大致保证正确性: 查看题目戳此::PTA题目集 L1题目集 L1-01 人与神(5分) L1-02 #两小时学完C语言 ...

  10. GPLT练习集L1 25--32

    GPLT练习集L1 25--32 L1-025 正整数A+B (15 分) 题目描述 代码 说明: L1-026 I Love GPLT (5 分) 题目描述 代码 L1-027 出租 (20 分) ...

最新文章

  1. Python+OpenCV 图像处理系列(8)—— Numpy 对象及图像对象创建与赋值
  2. yii2项目实战-用户管理之登录与注册功能实现
  3. python是一种语言吗-Python是一种什么样的编程语言?解释?编译?汇编?机械?...
  4. 进fastreboot
  5. 使用 Apache Commons CLI 开发命令行工具
  6. 从 vue-cli 源码中,我发现了27行读取 json 文件有趣的 npm 包
  7. HDFS查看文件的前几行-后几行-行数
  8. 梦幻西游手游服务器维护公告,梦幻西游手游3月7日全区全服维护更新公告
  9. 洛谷 P3732 [HAOI2017]供给侧改革【trie树】
  10. html表单自动编号,自动编号插件
  11. 使用WinSCP命令上传文件到CentOS
  12. 自定义控件之圆形的image
  13. python opencv中文文档_OpenCV中文官方文档
  14. 神经元的结构示意图手绘,神经元的结构图手绘
  15. 常见地图坐标系以及转换方法、转换工具
  16. PAT做题过程中的一些方法技巧总结
  17. ubuntu安装和卸载软件命令
  18. PHP_40+开发工具推荐
  19. 如何找到IEEE里面的论文模板
  20. 【经验分享】桥接网络无法联网、开发板挂载根文件系统问题解决

热门文章

  1. FontMetrics的相关函数
  2. android手机安装ubuntu并创建ubuntu图形界面(1)
  3. 为什么Android没有iOS顺滑zz
  4. iPhone X如何截图
  5. 毕业设计-基于JSP实现医院病历管理系统
  6. 图片懒加载(仿SDWebImage)
  7. php 字体如何加粗和调大小,如何在PHP中使文本变为粗体?
  8. 马克下, 初识 runtime (一)
  9. 安卓基础知识(一) 服务(Service)
  10. R语言如何绘制韦恩图(6)