华为OD机试 -排队游戏 刺头学生(C++ Java JavaScript Python)

这篇博客介绍了华为OD统一考试B卷中的一道题目,涉及班级排队和刺头学生的概念。文章详细阐述了题目描述、输入输出要求,并给出了解题思路和不同编程语言(Java、C++、Python、JavaScript)的实现代码。通过示例用例展示了如何计算不满程度并判断老师能否继续教学。
摘要由CSDN通过智能技术生成

题目描述

新来的老师给班里的同学排一个队。

每个学生有一个影力值。

一些学生是刺头,不会听老师的话,自己选位置,非刺头同学在剩下的位置按照能力值从小到大排。

对于非刺头同学,如果发现他前面有能力值比自己高的同学,他不满程度就增加,增加的数量等于前面能力值比他大的同学的个数。

刺头不会产生不满。

如果整个班级累计的不满程度超过k,那么老师就没有办法教这个班级了。

输入描述

输入有三行:

第一行为n,m,k,空格隔开,分别表示班级总人数,刺头人数,最大不满程度k。

第二行为刺头所在位置(从0开始,即排队数组的下标,比如1代表队伍中第2个同学是刺头),位置的数组也是排序的。

第三行有n个数,空格隔开,表示老师排好的队中每个人的能力值,其中非刺头同学一定按照能力值从小到大排好序的。

输出描述

0 表示老师可以继续教这个班级

1 表示老师无法继续教这个班级

备注

  • n 范围是[1,100000]
  • m 范围是 [1,n]
  • k 范国是[1,1000000000]
  • 每位同学的能力值范围是[1000,100000]

用例

输入 4 2 3
0 1
1810 1809 1801 1802
输出 1
说明 刺头在0,1位置,2号同学不满程度2(前面两个刺头能力值都比他大),3号同学不满程度2,总不满程度4,大于3。输出不能教这班(1)。
输入 4 2 4
0 1
1810 1809 1801 1802
输出 0
说明 同前,4不大于4,输出能教这个班 (0)

解题思路:

解题思路:

  1. 首先,从输入中解析出总人数、刺头人数、最大不满程度、刺头位置和每个同学的能力值。
  2. 初始化一个布尔数组,用于标记刺头同学的位置。
  3. 初始化一个变量用于存储总的不满程度,以及一个集合用于存储刺头同学的能力值。
  4. 遍历所有同学的能力值,对于刺头同学,将其能力值添加到刺头能力值集合中;对于非刺头同学,计算其不满程度,即刺头能力值集合中小于等于该同学能力值的个数。
  5. 最后,判断总的不满程度是否超过最大不满程度,如果超过则输出1,表示老师无法教这个班级;否则输出0,表示老师可以继续教这个班级。

java

import java.util.Sca
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值