C++题目:新的篮球队(题集)

1. 新的篮球队1

题目描述

很多人希望加入中国篮球队,每个人都有一个身高 h h h(单位:纳米)。

教练打算让所有人中身高最高的5个人首发出场,请列出这5个人的身高。

输入格式

第一行,一个整数 n n n,表示应招的队员人数。

之后 n n n行,每行一个整数 h h h,分别为每个球员的身高,保证所有队员的身高互不相同。

输出格式

输出为 5 5 5行,分别为身高第 1 , 2 , 3 , 4 , 5 1,2,3,4,5 1,2,3,4,5高的人的身高。

样例 #1

样例输入 #1

7
1500000000
1600000000
1700000000
1800000000
1900000000
2000000000
2100000000

样例输出 #1

2100000000
2000000000
1900000000
1800000000
1700000000

样例 #2

样例输入 #2

10
1623741820
2147483640
1728490184
1204748364
1833238548
1518993456
1937986912
1414245092
2042735276
1309496728

样例输出 #2

2147483640
2042735276
1937986912
1833238548
1728490184

提示

5 ≤ n ≤ 7 , 500 , 000 5 \le n \le 7,500,000 5n7,500,000;

1100000000 ≤ h ≤ 2147483647 1100000000 \le h \le 2147483647 1100000000h2147483647;

答案

#include<bits/stdc++.h>
using namespace std;

int n, a[7500005]; 
int main()
{
	ios::sync_with_stdio(0);
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	for (int i = 1; i <= 5; i++) {
		for (int j = i + 1; j <= n; j++) {
			if (a[j] > a[i])
				swap(a[j], a[i]);
		} 
	}
	for (int i = 1; i <= 5; i++)
		cout << a[i] << endl; 
    return 0;
}

2. 新的篮球队2

题目描述

很多人希望加入中国篮球队,每个人都有一个身高 h h h(单位:纳米)。初始时, n n n个人按身高从高到低的顺序排好队了,但因为一些骚动,他们在队伍中的位置发生了变化。

不过好在变化的并不多,每个人现在的位置跟当初相差不超过 5 5 5(例如,原先队伍中排在第 100 100 100的人,现在一定在第 95 ∼ 105 95\sim 105 95105范围内)

教练打算让所有人中身高分别为从高到低第 a , b , c , d , e a,b,c,d,e a,b,c,d,e名的队员出场,请列出这 5 5 5个人的身高。

输入格式

第一行,一个整数 n n n,表示球员人数;

之后 n n n行,每行一个整数 h h h,为现在从前到后每个球员的身高;

之后 5 5 5行,分别为 5 5 5个整数 a , b , c , d , e a,b,c,d,e a,b,c,d,e,保证 5 5 5个数各不相同,且在 1 ∼ n 1\sim n 1n的范围内。

输出格式

输出为 n n n行,每行一个整数,为当初(从高到低排好序的),从前到后每个球员的身高。

样例 #1

样例输入 #1

10
1937986919
1833238555
1728490191
1623741827
2042735283
1204748371
1100000007
1518993463
1414245099
1309496735
3
5
1
7
8

样例输出 #1

1833238555
1623741827
2042735283
1414245099
1309496735

提示

5 ≤ n ≤ 7500000 5 \le n \le 7500000 5n7500000;

1100000000 ≤ h ≤ 2147483647 1100000000 \le h \le 2147483647 1100000000h2147483647;

1 ≤ a , b , c , d , e ≤ n 1 \le a,b,c,d,e \le n 1a,b,c,d,en

答案

#include<bits/stdc++.h>
using namespace std;

int n, a[7500005]; 
int main()
{
	ios::sync_with_stdio(0);
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	
	for (int i = 1; i <= n; i++) { 
		for (int j = i; j > 1 && a[j] > a[j - 1]; j--) {
			swap(a[j], a[j - 1]);
		} 
	}
	int pos;
	for (int i = 1; i <= 5; i++) {
		cin >> pos;
		cout << a[pos] << endl; 
	}
		
    return 0;
}

3. 新的篮球队3

题目描述

很多人希望加入中国篮球队,每个人都有一个身高 h h h(单位:微米),这次只精确到微米是因为教练懒得量那么准了。

教练打算让所有人中身高分别为从高到低第 a , b , c , d , e a,b,c,d,e a,b,c,d,e名的队员出场,不计并列(例如 3 3 3个人并列第 5 5 5名,我们就认为他们分列 5 , 6 , 7 5,6,7 5,6,7名)。请列出这5个人的身高。

输入格式

第1行,1个整数 n n n,表示应招的队员人数。

之后 n n n行,每行 1 1 1个整数 h h h,为每个球员的身高,这次不保证所有球员的身高互不相同。

之后 5 5 5行,分别为 5 5 5个整数 a , b , c , d , e a,b,c,d,e a,b,c,d,e,保证 5 5 5个数各不相同,且在 1 1 1~ n n n的范围内。

输出格式

输出为5行,分别为身高从高到低的第 a , b , c , d , e a,b,c,d,e a,b,c,d,e名的身高。

样例 #1

样例输入 #1

10
1116807
1575249
1750073
2043658
1208930
1311272
1127544
1950878
1877923
1337709
1
6
3
8
4

样例输出 #1

2043658
1337709
1877923
1208930
1750073

提示

【样例1解释】

所有球员按身高排序后为:

第1:2043658
第2:1950878
第3:1877923
第4:1750073
第5:1575249
第6:1337709
第7:1311272
第8:1208930
第9:1127544
第10:1116807

容易发现第 1 , 6 , 3 , 8 , 4 1,6,3,8,4 1,6,3,8,4高的球员身高分别是:

2043658
1337709
1877923
1208930
1750073

【数据规模】

5 ≤ n ≤ 7 , 500 , 000 5 \le n \le 7,500,000 5n7,500,000;

1100000 ≤ h ≤ 2100000 1100000 \le h \le 2100000 1100000h2100000;

1 ≤ a , b , c , d , e ≤ n 1 \le a,b,c,d,e \le n 1a,b,c,d,en

答案

#include<bits/stdc++.h>
using namespace std;

int n,a[7500001],b[2100001],t;

int main(){
    ios::sync_with_stdio(0);
    cin >> n;
    for(int i=1;i<=n;i++){
    	cin >> a[i];
    	b[a[i]]++;
	}
	int cur=1;
	for(int i=2100001;i>=1;i--){
	    for(int j=1;j<=b[i];j++){
	        a[cur++] = i;
	    }
	}
	for(int i=1;i<=5;i++){
		cin >> t;
		cout << a[t] << endl;
	}
    return 0;
}

4. 新的篮球队4

题目背景

中国的篮球队表现不佳,教练打算从全国广招人才,重新组建篮球队。但他的水平有限,不太搞得清楚谁篮球打的好,所以只好选身高最高的。

来自某小学的 5 5 5位校队队员看了国家队之前的比赛,觉得自己也有实力试一试。

题目描述

很多人希望加入中国篮球队,每个人都有一个身高 h h h(单位:纳米)。初始时,已经有 n n n个人按身高从高到低的顺序排好队了,但有5名同学来晚了,请按他们每个人的身高给他们安排合适的位置,使得他们进入队伍后,队伍仍是从高到低排列的。

请确定这5个人在队列中的位置(从前到后的第几个)并输出。

输入格式

第一行,一个整数 n n n,表示已经排好队的球员人数。

之后 n n n行,每行一个整数,为已经排好队的每个球员的身高。

之后 5 5 5行,每行一个整数,分别为五名迟到同学的身高。

保证所有人的身高互不相同。

输出格式

输出为 5 5 5行,分别为 5 5 5位同学的位置(从前到后的第几个)。

5 5 5个数从小到大排列。

样例 #1

样例输入 #1

7
2100000000
2000000000
1900000000
1800000000
1700000000
1600000000
1500000000
1550000000
1650000000
1750000000
1850000000
1950000000

样例输出 #1

3
5
7
9
11

样例 #2

样例输入 #2

10
2042735283
1937986919
1833238555
1728490191
1623741827
1518993463
1414245099
1309496735
1204748371
1100000007
1100016807
1382475249
1722650072
2084943658
1244108929

样例输出 #2

1
6
10
12
14

提示

【样例1解释】

原有的 7 7 7个人已经按身高排好了序,新来的 5 5 5名同学加入后,所有 12 12 12个人的身高排序为:

2100000000
2000000000
1950000000
1900000000
1850000000
1800000000
1750000000
1700000000
1650000000
1600000000
1550000000
1500000000

容易看出新来的同学分列第 3 , 5 , 7 , 9 , 11 3,5,7,9,11 3,5,7,9,11名。

【数据规模】

5 ≤ n ≤ 7 , 500 , 000 5 \le n \le 7,500,000 5n7,500,000;

1100000000 ≤ h ≤ 2147483647 1100000000 \le h \le 2147483647 1100000000h2147483647;

答案

#include<bits/stdc++.h>
using namespace std;

int n, a[7500005]; 
int main()
{
	ios::sync_with_stdio(0);
	cin >> n;
	for (int i = 1; i <= n + 5; i++)
		cin >> a[i];
	for (int i = n + 1; i <= n + 5; i++) 
		for (int j = i + 1; j <= n + 5; j++)
			if (a[j] > a[i])
				swap(a[j], a[i]);

	int ans[10];
	for (int i = n + 1; i <= n + 5; i++) { 
		for (int j = i; j >= 1; j--) {
			if (j != 1 && a[j] > a[j - 1])
				swap(a[j], a[j - 1]);
			else {
				ans[i - n] = j; 
				break;
			} 
		} 
	}
	for (int i = 1; i <= 5; i++) {
		cout << ans[i] << endl; 
	}
		
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值