ccf-csp 期末预测之最佳阈值

2023-05-16

期末预测之最佳阈值

在一开始使用了双重循环的做法,没有考虑时间复杂度的问题,最终虽然结果正确了,但是提交后显示运行时间超时,看来复杂度为n2并不满足题目的要求。
之后便开始想办法降低复杂度,一开始是想对本来的代码进行改进,但是最终没有成功,不过学会了一个c++中sort函数的新用法,可以定义一个cmp函数来作为sort比较的方法,

bool cmp(pair<int,bool>a,pair<int,bool>b)
{
    return a.first < b.first;
}//根据pair中的第一个值进行升序排序 

如上,这样就可以在vector数组的元素为pair时,根据first或者second来进行排序了。

之后再网上学习了本题的其他解法,依然是首先根据阈值来进行排序,之后的做法比较聪明,就是建立两个数组,分别存贮对应下标的pair阈值数组的前缀为0的个数和后缀为1的个数,相加即可代表预测正确的总个数,最后再通过下标计算、比较每个阈值的正确个数。

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <map>

using namespace std;


bool cmp(pair<int,bool>a,pair<int,bool>b)
{
    return a.first < b.first;
}//根据pair中的第一个值进行升序排序 


int main(int argc, char** argv) {
	int m,k = -1,ma = 0;
	cin >> m;
	vector<pair<int,bool> > pii(m+1);
	pii[0] = pair<int,int>(-1,-1);
	vector<int> pre0(m+1,0);
	vector<int> rear1(m+1,0);
	int te = 0;
	bool res = 0;
	for(int i = 0;i<m;++i){
		cin>>pii[i].first>>pii[i].second;
	}
	sort(pii.begin()++,pii.end(),cmp);
	for(int i = 1;i <= m;++i)            //记录前缀0个数
        if(pii[i].second == 0)
            pre0[i] = pre0[i - 1] + 1;
        else
            pre0[i] = pre0[i - 1];
    for(int i = m;i >= 1;--i)           //记录后缀1个数
        if(pii[i].second == 1)
            rear1[i] = rear1[i + 1] + 1;
        else
            rear1[i] = rear1[i + 1];
    for(int i = 1;i <= m;++i){          //最终处理
        if(pii[i].first == pii[i - 1].first)
            continue;                   //如果有阈值相同的情况,那么在相同区间的第一个位置统计了,直接跳过
        if(ma <= pre0[i - 1] + rear1[i])//更新k和ma
            ma = pre0[i - 1] + rear1[i],k = pii[i].first;
    }
    cout<<k;
    return 0;

}

本部分代码大量cv自此博客:https://blog.csdn.net/qq_45985728/article/details/114903481,感谢大佬的分享。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ccf-csp 期末预测之最佳阈值 的相关文章

  • CCP-CSP 201912-5 魔数 暴力25

    原题链接 xff1a CCP CSP 201912 5 魔数 线段树是写不来的 span class token macro property span class token directive hash span span class
  • CSP CCF: 202012-2 期末预测之最佳阈值 (C++)

    目录 题目来源题目描述解题过程完整代码 题目来源 链接 CCF 期末预测之最佳阈值 题目描述 解题过程 题目要求为选取合适的安全指数阈值 Theta xff0c 使得该阈值对这 m 位同学上学期的挂科情况进行预测 xff0c 预测正确的次数
  • CCF画图

    include lt stdio h gt struct rectStruct int a b int m n struct rectStruct rects 100 int rectS 61 0 int n int inYLine int
  • CCF-CSP考试介绍以及复习技巧指导

    CCF CSP考试时间及费用 时间一般是每年3 9 12月的中旬 xff0c 报名时间一般也是提前一个月 xff0c 不固定 非计算机协会会员300元 次 xff0c 会员180元 次 xff08 学生会员需缴纳50元 年的会费 xff09
  • ccf 画图

    问题描述 试题编号 xff1a 201409 2试题名称 xff1a 画图时间限制 xff1a 1 0s内存限制 xff1a 256 0MB问题描述 xff1a 问题描述 在一个定义了直角坐标系的纸上 xff0c 画一个 x1 y1 到 x
  • CSP-M3 B

    思路 xff1a 定义两个矩阵 xff0c 一个矩阵记录输入的数据 xff0c 另一个矩阵起标记作用 xff0c 当以行的方式遍历矩阵 xff0c 如果大于等于3个数字相同 xff0c 则标记为0 同理 xff0c 以竖的方式进行遍历 最后
  • CSP考试 2016年04月第3题 路径解析 C++实现

    表示本目录 xff0c 例如 d1 f1 指定的就是 d1 f1 如果有多个连续的 出现 xff0c 其效果等同于一个 绝对路径 xff1a 以 符号开头 xff0c 表示从根目录开始构建的路径 相对路径 xff1a 不以 符号开头 xff
  • 针对CSP-T1,T2的练习

    文章目录 题目1问题描述样例输入样例输出 解题思路代码 题目2问题描述样例输入样例输出 解题思路代码 题目1 问题描述 给出n个数 xff0c zjm想找出出现至少 n 43 1 2次的数 xff0c 现在需要你帮忙找出这个数是多少 xff
  • CCF之“毫无头绪”

    1 CCF之任务调度 xff1a 试题编号 xff1a 201403 5 试题名称 xff1a 任务调度 时间限制 xff1a 1 0s 内存限制 xff1a 256 0MB 问题描述 xff1a 问题描述 有若干个任务需要在一台机器上运行
  • CCF期末预测之最佳阈值

    题目背景 考虑到安全指数是一个较大范围内的整数 小菜很可能搞不清楚自己是否真的安全 xff0c 顿顿决定设置一个阈 xff0c 以便将安全指数 y转化为一个具体的预测结果 会挂科 或 不会挂科 因为安全指数越高表明小菜同学挂科的可能性越低
  • csp 201312-4有趣的数

    题意 xff1a 问题描述 我们把一个数称为有趣的 xff0c 当且仅当 xff1a 1 它的数字只包含0 1 2 3 xff0c 且这四个数字都出现过至少一次 2 所有的0都出现在所有的1之前 xff0c 而所有的2都出现在所有的3之前
  • 计算机图形学期刊影响因子,计算机图形学 | CCF推荐期刊专刊信息2条

    原标题 xff1a 计算机图形学 CCF推荐期刊专刊信息2条 图形学与多媒体 Computers amp Graphics Call for papers Shape Modelling International SMI 2019 全文截
  • CCF/CSP 201312-1出现次数最多的数(满分题解Java版)

    CCF 考试 一定要刷历年真题 在提交代码的时候 一定不要把中文注释提交上去了 可能会编译报错 题目描述 201312 1出现次数最多的数 Java题解 import java util ArrayList import java util
  • CSP 202305-1 重复局面

    题目背景 国际象棋在对局时 同一局面连续或间断出现3次或3次以上 可由任意一方提出和棋 问题描述 国际象棋每一个局面可以用大小为 8 8 的字符数组来表示 其中每一位对应棋盘上的一个格子 六种棋子王 后 车 象 马 兵分别用字母 k q r
  • CCF-CSP 新生必读

    CCF软件能力认证 Certified Software Professional CSP CSP认证考什么 怎么考 1 认证概况 认证名称 计算机软件能力考试认证 简称软件能力认证 认证定义 软件能力包括软件的开发 测试 部署和运行维护能
  • 数据结构--二叉树

    前言 关于二叉树知识的考察主要分两部分 第一部分在初赛中体现 一般考察二叉树的节点个数 树高和遍历问题 1 二叉树定义 在计算机科学中 二叉树是每个结点最多有两个子树的树结构 通常子树被称作 左子树 left subtree 和 右子树 r
  • C++语言基础--递归函数

    对于很多编程初学者来说 递归算法是学习语言的最大障碍之一 可能也有一大部分人知道递归 也能看的懂递归 但在实际做题过程中 却不知道怎么使用 递归的定义 1 很官方的说法 递归 在数学与计算机科学中 是指在函数的定义中使用函数自身的方法 也就
  • CCF/CSP 201604-2 俄罗斯方块(满分题解Java版)

    此题 猛滴一看确实非常容易让人懵懵的 主要是题目描述的非常不清晰 很难让人能够透彻的理解 如果连题目都看不懂 那就不谈写出代码了 题目描述 官方题目描述 题目地址 题目解读 关键的是要理解题目 Java题解 import java util
  • csp试题1:小明种苹果

    csp试题1 小明种苹果 题目 分析 代码 总结 题目 题目描述 小明在他的果园里种了一些苹果树 为了保证苹果的品质 在种植过程中要进行若干轮疏果操作 也就是提前从树上把不好的苹果去掉 第一轮疏果操作开始前 小明记录了每棵树上苹果的个数 每
  • CSP 202212-1 现值计算

    答题 主要就是 include

随机推荐

  • 数字的逆序输出

    include lt stdio h gt int main 将一个数字逆序输出 printf 34 请输入一个数字 xff1a n 34 int number scanf 34 d 34 amp number printf 34 逆转后的
  • ENSP教程---OSPF单区域配置实验

    目录 一 实验目标 二 拓扑图 三 配置基本环境 四 配置OSPF 五 修改 OSPF hello dead时间参数 七 控制OSPF xff24 R BDR的选举 八 配置信息 一 实验目标 掌握OSPF 中Router ID 的配置方法
  • Java判断回文序列

    经典的回文序列判断问题 xff0c 博主在学数据结构时遇到的一道作业题 xff0c 当时老师让用栈做的 xff0c 将我自己写的程序分享一下 xff1a 题目 xff1a 编写一个程序判别读入的字符序列是否为 回文序列 xff0c 所谓回文
  • 定义一个数组,然后从键盘输入10个整数,编程求出其最大值、最小值以及平均值(C语言)

    本程序使用了定义冒泡排序函数和定义求平均函数的方法 include lt stdio h gt include lt math h gt void Bubblesort int a int len int i j temp for j 61
  • 「Atcoder」abc242 题解

    A T shirt Code span class token keyword void span span class token function solve span span class token punctuation span
  • websocket的reconnecting-websocket的使用

    1 引用 reconnecting websocket js npm i reconnecting span class token operator span websocket 2 建立websocket ts span class t
  • nextcloud+nginx+ssl+非443,踩坑记录

    需求描述 pc 移动端app必须都支持 为了省阿里云服务器流量 xff0c 服务器需要的三个访问路径 1 需要内网可以通过ip 43 port直接访问 2 外网可以通过ddns访问 xff0c 因为443和80端口都被封 xff0c 只能换
  • 【python学习笔记】

    一 基础知识 1 字面量 xff1a 被写下来的固定的值 2 单行注释符 xff1a 单行注释内容 ps xff1a 注释符后要有个空格 3 多行注释 xff1a 34 34 34 多行注释内容 34 34 34 4 查看变量和字面量类型
  • linux命令(包含基础命令和进阶命令)大全

    拷贝 xff1a yy 删除 xff1a dd 末行 xff1a G 首行 xff1a gg 设置行号 xff1a set u 撤销 xff1a u 定位某行 xff1a 行号 shift 43 g 关机 xff1a shutdown ha
  • 汇编语言学习笔记

    一 绪论 所用教材 xff1a 汇编语言第3版 王爽老师 xff0c 清华大学出版社 1 从机器语言到汇编语言 机器语言是机器指令的集合 xff0c 汇编指令是机器指令的助记符 xff0c 汇编指令通过编译器转换成机器可以识别的01机器码
  • 机器学习笔记

    一 绪论 1 监督学习 给定一个数据集 xff0c 且已经表明了 正确答案 1 1回归问题 xff1a 预测一个连续值输出 xff1b 分类问题 xff1a 预测一个离散值输出 2 无监督学习 给定一个未表明意义的数据集 xff0c 将其分
  • C++之 try语句块和异常处理

    一 异常 异常是指存在于代码运行时的反常行为 xff0c 这些反常行为超出了函数正常执行功能的范围 xff0c 异常处理机制包括两部分的协同支持 xff1a 异常检测和异常处理 二 C 43 43 中的异常处理 在c 43 43 语言中 x
  • leetcode166题-分数到小数

    题目来源 xff1a leetcode cn 问题描述 xff1a 给定两个整数 xff0c 分别表示分数的分子 numerator 和分母 denominator xff0c 以 字符串形式返回小数 如果小数部分为循环小数 xff0c 则
  • set_new_handler(0)

    STL源码剖析 第45页中有一行代码set new handler 0 xff09 xff1a inline T allocate ptrdiff t size T std set new handler 0 T tmp 61 T oper
  • win11电脑中文用户名修改成英文用户名

    电脑的用户名是中文 xff0c 在某些软件中会产生乱码问题 xff0c 甚至无法使用的问题 xff0c 比如rabbitmq就会无法使用 这个问题可真是头疼啊 下面我就来介绍一下 xff0c win11怎么修改用户名 首先需要退出当前用户
  • 【计蒜客普及T1】T1068 救援-Java

    文章目录 一 问题描述二 格式要求1 输入格式2 输出格式 三 思路分析四 代码实例 一 问题描述 救生船从大本营出发 xff0c 营救若干屋顶上的人回到大本营 xff0c 屋顶数目以及每个屋顶的坐标和人数都将由输入决定 xff0c 求出所
  • 【Windows优化系列】Windows11安装Android子系统

    前言 Q xff1a 为什么要在Windows安装Android系统 xff1f 直接在手机使用不好吗 xff1f A xff1a 在电脑刷酷安不比拿着手机刷酷安爽吗 xff1f 在电脑版的酷安码字不比手机上码字爽吗 xff1f 不用打开手
  • 解决toolbar标题不显示问题

    问题原因 xff1a toolbar的兼容性有问题 解决办法 xff1a setSupportActionBar toolbar toolbar使用步骤 xff1a 1 编写menu xml 为了保持兼容需要这样写 xff1a androi
  • vue3.0框架Element Plus

    Element Plus 前言一 安装二 使用步骤1 完整引入2 按需导入ViteWebpack 前言 由于 Vue 3 不再支持 IE11 xff0c Element Plus 也不再支持 IE 浏览器 一 安装 span class t
  • ccf-csp 期末预测之最佳阈值

    期末预测之最佳阈值 在一开始使用了双重循环的做法 xff0c 没有考虑时间复杂度的问题 xff0c 最终虽然结果正确了 xff0c 但是提交后显示运行时间超时 xff0c 看来复杂度为n2并不满足题目的要求 之后便开始想办法降低复杂度 xf