L1-030 一帮一(c++实现)
“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。
输入格式:
输入第一行给出正偶数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++实现)相关推荐
- 团体程序设计天梯赛-练习集-java
java不一定能都过 有星号*的都是我java过不去的 但是代码思路都是对的 如果需要c++的 可以留言 L1 L2 L3 001 Hello World 紧急救援 凑零钱 002 打印沙漏 链表去重 ...
- 80页笔记看遍机器学习基本概念、算法、模型,帮新手少走弯路
来源:机器之心 本文约1000字,建议阅读6分钟. 这份学习笔记帮你及时回顾机器学习概念,带你快速上手. [ 导读 ]目前有关机器学习的资料可谓层出不穷,其中既有书籍.课程视频资料,也有很多算法模型的 ...
- 新手必看的编程介绍,帮你推荐学习方案!
新手必看的编程介绍,帮你推荐学习方案! VB是什么? ) y0 {6 G# G; j3 B VB 是Visual Basic编程语言 * B. O2 G# z) O1 |- g8 `4 ^ 编写计算机 ...
- pytorch实现L2和L1正则化regularization的方法
pytorch实现L2和L1正则化的方法 目录 目录 pytorch实现L2和L1正则化的方法 1.torch.optim优化器实现L2正则化 2. 如何判断正则化作用了模型? 2.1 未加入正则化l ...
- 在tensorflow框架下添加正则化约束l1、l2的方法
一.基础正则化函数 tf.contrib.layers.l1_regularizer(scale, scope=None) 返回一个用来执行L1正则化的函数,函数的签名是func(weights). ...
- 一文帮你理解模型选择方法:AIC、BIC和交叉验证!
一文帮你理解[模型选择方法]:AIC.BIC 和交叉验证! 本文先讲透模型选择的基本思想,再逐一叙述几种比较典型和常用的模型选择方法,希望可以帮助你理解. 一.模型选择的基本思想 模型选择的核心思想就 ...
- 天梯赛L1(1-80)
目录 L1-001 Hello World L1-002 打印沙漏 L1-003 个位数统计 L1-004 计算摄氏温度 L1-005 考试座位号 L1-006 连续因子 L1-007 念数字 L1- ...
- 打工人的「周游世界」,AI算法帮你实现,泪目!
一.前言 大家好,我是 Jack . 最近又有一个算法火了,不知道你们看到没?直接看效果! 打工人的「周游世界」,AI 算法帮你实现. 效果这么稳定的人像 Image Matting算法真的不多,并且 ...
- 2021/4/24团队设计天梯赛L1题目集及题解
2021/4/24团队设计天梯赛L1题目集及题解: 以下题解都是通过PTA测试的,大致保证正确性: 查看题目戳此::PTA题目集 L1题目集 L1-01 人与神(5分) L1-02 #两小时学完C语言 ...
- GPLT练习集L1 25--32
GPLT练习集L1 25--32 L1-025 正整数A+B (15 分) 题目描述 代码 说明: L1-026 I Love GPLT (5 分) 题目描述 代码 L1-027 出租 (20 分) ...
最新文章
- Python+OpenCV 图像处理系列(8)—— Numpy 对象及图像对象创建与赋值
- yii2项目实战-用户管理之登录与注册功能实现
- python是一种语言吗-Python是一种什么样的编程语言?解释?编译?汇编?机械?...
- 进fastreboot
- 使用 Apache Commons CLI 开发命令行工具
- 从 vue-cli 源码中,我发现了27行读取 json 文件有趣的 npm 包
- HDFS查看文件的前几行-后几行-行数
- 梦幻西游手游服务器维护公告,梦幻西游手游3月7日全区全服维护更新公告
- 洛谷 P3732 [HAOI2017]供给侧改革【trie树】
- html表单自动编号,自动编号插件
- 使用WinSCP命令上传文件到CentOS
- 自定义控件之圆形的image
- python opencv中文文档_OpenCV中文官方文档
- 神经元的结构示意图手绘,神经元的结构图手绘
- 常见地图坐标系以及转换方法、转换工具
- PAT做题过程中的一些方法技巧总结
- ubuntu安装和卸载软件命令
- PHP_40+开发工具推荐
- 如何找到IEEE里面的论文模板
- 【经验分享】桥接网络无法联网、开发板挂载根文件系统问题解决