CCF-CSP认证 202012-2 期末预测之最佳阈值

2024-06-19 16:38

本文主要是介绍CCF-CSP认证 202012-2 期末预测之最佳阈值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

思路写在注释里面了。《算法笔记》P147页,活用递推章节语:“很多题目需要细心考虑过程中是否存在可能的递推关系,如果能找到这样的递推关系,就能使时间复杂度下降不少。例如就一类涉及序列的题目来说,假如序列每一位所需要计算的值都可以通过该位左右两侧的计算结果得到,那么就可以考虑所谓的‘左右两侧的结果’是否能够通过递推进行预处理来得到,这样在后面的使用中就可以不必反复求解。”

PAT B1040/A1093也是这个思路。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
struct Student
{int y_{ 0 };int result_{ 0 };
};
bool cmp(const Student &lhs, const Student &rhs)
{if (lhs.y_ != rhs.y_) return lhs.y_ < rhs.y_;return lhs.result_ < rhs.result_;
}
struct ThreeElementArr {int y_{ 0 };int pass_lower_than_y_{ 0 };int fail_higher_than_y_{ 0 };
};
int main()
{
#ifdef LOCALfreopen("input.txt", "r", stdin);
#endifint m; cin >> m; vector<Student> student_set(m);for (int i = 0; i < m; ++i) {cin >> student_set[i].y_ >> student_set[i].result_;}// 根据y,m个人形成一个排序,把m个人划分成rank+1个类(相同的y在相同的类)(rank<m,从0开始)。// 维护一个大小为rank+1的数组,数组元素为三元组,// 三元组的构成为:{这个rank的y,这个rank之前有多少人过了,这个rank之后有多少人没过};// 从前向后扫描一次排好序的student_set获得第二个元,从后向前获得第三个元,时间复杂度O(2N).// 再扫描一遍这个数组,第二个元和第三个元加和结果最小的元素的y就是阈值y.sort(student_set.begin(), student_set.end(), cmp);vector<ThreeElementArr> rank_arr(m);// 第二个元,即小于此分数的人中有多少人没过。int pass_lower_than_y = 0;int rank = 0;for (int i = 0; i < m; ++i) {if (i == 0) {rank_arr[rank].y_ = student_set[i].y_;}else if (i != 0 && student_set[i].y_ != student_set[i - 1].y_) {++rank;rank_arr[rank].y_ = student_set[i].y_;rank_arr[rank].pass_lower_than_y_ = pass_lower_than_y;}if (student_set[i].result_ == 1) {++pass_lower_than_y;}}// 第三个元,也就是分数大于等于此分数的人中有多少人没有过。int rrank = rank;int fail_higher_tan_y = 0;for (int i = m - 1; i >= 0; i--) {if (i != m - 1 && student_set[i].y_ != student_set[i + 1].y_) {--rrank;}if (student_set[i].result_ == 0) {++fail_higher_tan_y;}rank_arr[rrank].fail_higher_than_y_ = fail_higher_tan_y;}// 寻找和最小的元素的yint min=999999999; int min_idx;for (int i = rank; i >= 0; --i) {if (rank_arr[i].fail_higher_than_y_ + rank_arr[i].pass_lower_than_y_ < min) {min = rank_arr[i].fail_higher_than_y_ + rank_arr[i].pass_lower_than_y_;min_idx = i;}}cout << rank_arr[min_idx].y_;
}

这篇关于CCF-CSP认证 202012-2 期末预测之最佳阈值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075571

相关文章

数据库期末复习知识点

A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

9 个 GraphQL 安全最佳实践

GraphQL 已被最大的平台采用 - Facebook、Twitter、Github、Pinterest、Walmart - 这些大公司不能在安全性上妥协。但是,尽管 GraphQL 可以成为您的 API 的非常安全的选项,但它并不是开箱即用的。事实恰恰相反:即使是最新手的黑客,所有大门都是敞开的。此外,GraphQL 有自己的一套注意事项,因此如果您来自 REST,您可能会错过一些重要步骤!

糖尿病早中期症状常常被人们忽视,从而错过最佳的干预时机。

我们都知道糖尿病有“三多一少”(多饮、多尿、多食、体重减少)的典型症状。然而,现实中糖尿病的表现并非总是如此清晰。更麻烦的是,糖尿病具有很强的隐匿性,若不做血糖检查,多数人难以察觉自己已患病。 今天,给大家说明下糖尿病的早中期症状,期望能有所帮助。如果您出现以下 10 种症状中的 5 种 及以上,强烈建议尽快做血糖检测来确认 早日做到早预防早控制! “手部或脚部有刺痛、麻木的感觉”

Netty ByteBuf 释放详解:内存管理与最佳实践

Netty ByteBuf 释放详解:内存管理与最佳实践 在Netty中(学习netty请参考:🔗深入浅出Netty:高性能网络应用框架的原理与实践),管理ByteBuf的内存是至关重要的(学习ByteBuf请参考:🔗Netty ByteBuf 详解:高性能数据缓冲区的全面介绍)。未能正确释放ByteBuf可能会导致内存泄漏,进而影响应用的性能和稳定性。本文将详细介绍如何正确地释放ByteB

程序人生:关于RHCE红帽认证这件事

花了两个月备考红帽,最终终于双满分通过。  关于考试 RHCE红帽认证总共需要考两门:RHCSA、RHCE。 RHCSA主要是考察基本的Linux操作:用户、权限、空间扩容、yum、容器等内容。 RHCE主要是考察ansible playbook 代码的开发。 通过考试没有别的捷径,就是敲命令,键盘照着冒烟了敲。 关于备考        说是两个月时间备考,其实前面一个

2023-2024 学年第二学期小学数学六年级期末质量检测模拟(制作:王胤皓)(90分钟)

word效果预览: 一、我会填 1. 1.\hspace{0.5em} 1. 一个多位数,亿位上是次小的素数,千位上是最小的质数的立方,十万位是 10 10 10 和 15 15 15 的最大公约数,万位是最小的合数,十位上的数既不是质数也不是合数,这个数是 ( \hspace{4em} ),约等于 ( \hspace{1em} ) 万 2. 2.\hspace{0.5em} 2.

机器学习回归预测方法介绍:优缺点及适用情况

机器学习中的回归任务是预测连续变量的值,这在金融、医疗、市场分析等领域有着广泛的应用。本文将介绍几种常见的机器学习回归方法,探讨它们的基本原理、优缺点及适用情况。 目录 1. 线性回归(Linear Regression) 2. 多项式回归(Polynomial Regression) 3. 决策树回归(Decision Tree Regression) 4. 随机森林回

首次使用回声状态网络 (ESN) 和语音特征进行帕金森病 (PD) 预测

帕金森病(Parkinson's disease, PD)是一种使人衰弱的神经退行性疾病,它需要进行精确和早期的诊断,以便为患者提供有效的治疗和护理。这种疾病是由James Parkinson在1817年首次确定的,其特征是多巴胺生成神经元的退化。多巴胺的不足导致了一系列症状,包括静止性震颤、肌肉僵硬、运动迟缓(姿势不稳定)、以及其他重要特征,如睡眠障碍、心律失常、便秘和语音变化,这

Excel做简单的趋势预测

这种方法不能代替机器学习,时序分析等,只是为后面的时序预测提供一个经验认识。 step1         选中序号列(或时间列)与预测列如图1所示: 图1 step2         工具栏点击“数据”,然后再“数据”下点击“预测模型”,如图2所示: 图2 step3         这样就会跳出窗口,此处可以进行一些参数设置如图3所示: 图3