IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> L1-088 静静的推荐 - java -> 正文阅读

[数据结构与算法]L1-088 静静的推荐 - java

L1-088 静静的推荐


Java (javac)
时间限制
1300 ms
内存限制
256 MB

Python (python3)
时间限制
400 ms
内存限制
64 MB

其他编译器
时间限制
200 ms
内存限制
64 MB


题目描述:

天梯赛结束后,某企业的人力资源部希望组委会能推荐一批优秀的学生,这个整理推荐名单的任务就由静静姐负责。企业接受推荐的流程是这样的:

  • 只考虑得分不低于 175 分的学生;
  • 一共接受 K 批次的推荐名单;
  • 同一批推荐名单上的学生的成绩原则上应严格递增;
  • 如果有的学生天梯赛成绩虽然与前一个人相同,但其参加过 PAT 考试,且成绩达到了该企业的面试分数线,则也可以接受。

给定全体参赛学生的成绩和他们的 PAT 考试成绩,请你帮静静姐算一算,她最多能向企业推荐多少学生?

输入格式:
输入第一行给出 3 个正整数:N(≤ 1 0 5 10^{5} 105)为参赛学生人数,K(≤ 5 × 1 0 3 5×10^{3} 5×103)为企业接受的推荐批次,S(≤100)为该企业的 PAT 面试分数线。

随后 N 行,每行给出两个分数,依次为一位学生的天梯赛分数(最高分 290)和 PAT 分数(最高分 100)。

输出格式:
在一行中输出静静姐最多能向企业推荐的学生人数。

输入样例:
10 2 90
203 0
169 91
175 88
175 0
175 90
189 0
189 0
189 95
189 89
256 100
输出样例:
8

样例解释:
第一批可以选择 175、189、203、256 这四个分数的学生各一名,此外 175 分 PAT 分数达到 90 分的学生和 189 分 PAT 分数达到 95 分的学生可以额外进入名单。第二批就只剩下 175、189 两个分数的学生各一名可以进入名单了。最终一共 8 人进入推荐名单。


给定n组名单 求出满足条件的人数


emmmmmmm

题目条件为:

  • 天梯赛分数不低于 175 分的学生
  • 一共接受 K 批次的推荐名单
  • PAT 分数达到了该企业的面试分数线直接录用

简单来说
PAT分数达到了该企业的面试分数线 直接录用
PAT分数未达到该企业的面试分数线 且 天梯赛分数不低于 175 分的学生 录用K人


可以有两种写法

统计这个分数段剩下还可以录用多少人 和 统计这个分数段有多少人与K取一个min值


1

import java.io.*;
import java.math.*;
import java.util.*;

public class Main
{

	public static void main(String[] args)
	{
		int n = sc.nextInt(), k = sc.nextInt(), s = sc.nextInt();

//		存储该分段剩下可招的人数
		TreeMap<Integer, Integer> res = new TreeMap<Integer, Integer>();

//		招的人数
		int ans = 0;
		while (n-- > 0)
		{
			int a = sc.nextInt(), b = sc.nextInt();

//			如果天梯赛分数 小于 175 就不会考虑
			if (a < 175)
				continue;

//			如果PAT 分数大于等于该企业的 PAT 面试分数线 直接录取
			if (b >= s)
			{
				ans++;
				continue;
			}

//			如果还未招该分段的人就最多招来k人
			if (!res.containsKey(a))
			{
//				剩下的剩下为 k - 1
				res.put(a, k - 1);

//				人数增加
				ans++;
			}
//			不然就是已经招了该分段的人
			else
			{
//				如果当前分段剩下可招的人数 > 0 那么就表示这个分段还可以招人
				if (res.get(a) > 0)
				{
//					该分段可招的剩下人数 - 1
					res.merge(a, -1, Integer::sum);

//					人数增加
					ans++;
				}
			}
		}
		out.println(ans);

		out.flush();
		out.close();
	}

	static Scanner sc = new Scanner(System.in);
	static PrintWriter out = new PrintWriter(System.out);
}


2

import java.io.*;
import java.math.*;
import java.util.*;

public class Main
{

	public static void main(String[] args)
	{
		int n = sc.nextInt(), k = sc.nextInt(), s = sc.nextInt();

//		存储该分段未被直接招的人数
		TreeMap<Integer, Integer> res = new TreeMap<Integer, Integer>();

//		招的人数
		int ans = 0;
		while (n-- > 0)
		{
			int a = sc.nextInt(), b = sc.nextInt();

//			如果天梯赛分数 小于 175 就不会考虑
			if (a < 175)
				continue;

//			如果PAT 分数大于等于该企业的 PAT 面试分数线 直接录取
			if (b >= s)
				ans++;
			else
				res.merge(a, 1, Integer::sum);
		}

		for (int i : res.keySet())
			ans += Math.min(res.get(i), k);

		out.println(ans);

		out.flush();
		out.close();
	}

	static Scanner sc = new Scanner(System.in);
	static PrintWriter out = new PrintWriter(System.out);
}


TreeMap
TreeMap

merge
merge
merge

treemap.merge(key, value, remappingFunction)
key - 键
value - 值
remappingFunction - 重新映射函数,用于重新计算值返回值

lambda表达式:( 参数 ) - > 表达式

merge我个人觉得和普通的containsKey()查找相同再存进去一样,不过merge更方便点 第三个 里( 可以 ( 那个我也不确定 ,但是这种形式我觉得是lambda表达式) )放lambda表达式( 而 lambda表达式 也觉得是是释放双手的一个东东,它可以将参数里面的数进行表达式运算再传出答案 )求个数


如果有说错的 或者 不懂的 尽管提 嘻嘻

一起进步!!!


闪现

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:21:18  更:2022-04-29 12:25:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:40:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码