当前位置: 首页 > 编程日记 > 正文

(C++)202012-2 期末预测之最佳阈值 满分

#include<cstdio>
#include<algorithm>
using namespace std;const int M = 100000;struct Student{int score;int res;//0表示挂科,1表示未挂int times;//表示预测正确的次数 int before;//在它之前的0的个数 int after;//在它之后的1的个数 
}stus[M+10];int n,suffix[M+10],prefix[M+10];bool cmp(Student a,Student b){//分数低的排在前面 if(a.score!=b.score){return a.score<b.score;}else{return a.res<b.res;}
}bool cmp2(Student a,Student b){//正确次数多的排在前面,次数一样分高的排在前面 if(a.times!=b.times){return a.times>b.times;}else if(a.score!=b.score){return a.score>b.score;}else{return a.res<b.res;}
}int main(){int i;scanf("%d",&n);//读入 for(i=0;i<n;i++){scanf("%d%d",&stus[i].score,&stus[i].res);} //按分数从低到高排序 sort(stus,stus+n,cmp);//测试点1:看一下排序后的结果
//	printf("\n");
//	for(i=0;i<n;i++){
//		printf("%d,%d\n",stus[i].score,stus[i].res); 
//	} //计算每个人之前的0的总数 stus[0].before=0; for(i=1;i<n;i++){if(stus[i-1].res==0){stus[i].before=stus[i-1].before+1;}else{stus[i].before=stus[i-1].before;}	}//计算每个人之后(含)的1的总数 stus[n].after=stus[n].res;for(i=n-1;i>=0;i--){stus[i].after=stus[i+1].after+stus[i].res;}//计算每个人预测正确的次数 for(i=0;i<n;i++){stus[i].times=stus[i].before+stus[i].after;}//对预测正确的次数进行矫正,即,如果score等于上一个,那么times也等于上一个for(i=1;i<n;i++){if(stus[i].score==stus[i-1].score){stus[i].times=stus[i-1].times;}} //按照预测正确次数从高到低排序 sort(stus,stus+n,cmp2);//测试点2:看一下排序后的结果
//	printf("\n");
//	for(i=0;i<n;i++){
//		printf("%d,%d,before=%d,after=%d\n",stus[i].score,stus[i].times,stus[i].before,stus[i].after); 
//	} //输出正确次数最高的那个人的分数 printf("%d",stus[0].score); return 0;
}

经验:
①本题是典型的利用递推关系来降低时间复杂度
②测试数据当中有一组非常有趣,即

8
5 1
5 0
5 0
2 1
3 0
4 0
100000000 1
1 0

可以看到,同样是阈值5,放在本程序中计算得到预测正确次数是不一样的,最终我加入这段代码解决了这个问题可能导致的错误

//对预测正确的次数进行矫正,即,如果score等于上一个,那么times也等于上一个for(i=1;i<n;i++){if(stus[i].score==stus[i-1].score){stus[i].times=stus[i-1].times;}} 

相关文章:

javascript之prototype总结常用方法

//去左右空格String.prototype.trim function(){ return this.replace(/^\s*|\s*$/g,);}//去空格添加至数组集合String.prototype.splitrim function(t){ return this.trim().split(new RegExp(\\s*t\\s*)) }test "testing , splitrim ";var arr test.split…

Power Designer逆向工程导入Oracle表,转为模型加注释

1.打开PowerDesigner ——文件——Reverse Engineer——DataBase 2.选择所要连接数据库版本&#xff0c;此处使用的是oracle version 11g。 3.点击红色区域&#xff0c;选择数据源 4.选择modify 5.在此填写你的数据库名称、连接地址、用户名。确定 6.选择你新建立的连接数据库 …

ubuntu修改主机名后无法解析主机

修改完主机名后在执行sudo命令时&#xff0c;会提示sudo: 无法解析主机。在网上搜了下&#xff0c;找到了解决方法&#xff1a;1.sudo vim /etc/hosts找到如下行&#xff1a;127.0.1.1 XXX修改为&#xff1a;127.0.1.1 &#xff08;修改后的主机名&#xff09; 转载于:https://…

(C++)201709-1 打酱油

#include<cstdio> #include<algorithm> using namespace std;//贪心问题&#xff0c;优先级&#xff1a;剩的钱购买5瓶就买5瓶&#xff0c;不够看够不够买三瓶&#xff0c;再不够看够不够买一瓶 int main(){int start,left,num0;//初始的钱&#xff0c;当前剩下的…

【转】实现多行toolTips的类模块

注&#xff1a;本文转自CSDN论坛这里有一个类模块,就是用来实现多行 toolTips 的. Option Explicit Module Name : mdlAPI Written By : Gordon Robinson Date …

POJ 1458

给出两个字符串&#xff0c;求它们最长的公共子字符串长度。 如abfgc acbfefc 最长的公共子字符串为abfc 长度为4 思路&#xff1a;找到s1[i]与s2[j]的时候&#xff0c;相等的话&#xff0c;dp[i1][j1]dp[i][j]1; 不等的话dp[i1][j1]max(dp[i][j1],dp[i1][j]); #include <…

Activity的LaunchMode

在Android中&#xff0c;启动一个Activity有时需要总是创建一个新的对象&#xff0c;有时需要重复使用以后的对象&#xff0c;可以通过在配置activity时通过LaunchMode属性指定。 LaunchMode的属性值&#xff1a; 1、shandard&#xff1a; 标准模式&#xff1a;每次调用startAc…

邻域数、直接密度可达、密度可达、密度相连的概念

例子&#xff1a;如图所示&#xff0c;Eps用一个相应的半径表示&#xff0c;设MinPts3&#xff0c;请分析Q,M,P,S,O,R这5个样本点之间的关系。 易知&#xff0c;P,M,Q,O,SO之间的点,OR之间的点都是核心点 M是从P直接密度可达&#xff0c;Q是从M直接密度可达 Q是从P密度可达(反…

VUE中使用Echarts绘制地图迁移

踩坑说明 很久以前写jsp时使用过echarts的china.js插件&#xff0c;不过echarts是2.0的&#xff0c;目前vue项目中使用echarts3.8.5&#xff0c;直接将china.js插件引入&#xff0c;代码复制&#xff0c;运行一看&#xff0c;GG。地图中央只有一个光溜溜的南海群岛框框&#xf…

关于mysql字符集及导入导出

MySQL字符集设置 • 系统变量&#xff1a;– character_set_server&#xff1a;默认的内部操作字符集– character_set_client&#xff1a;客户端来源数据使用的字符集– character_set_connection&#xff1a;连接层字符集– character_set_results&#xff1a;查询结果字符集…

javascrip 常用属性

1 隐藏控件<div style"dispay:none"><asp:TextBox id"txthiddent" run"server"></asp:TextBox></div>2 页面引用带的<script> </script> EnDate.JS<head><!--#Include File"Js/EnDate.js&q…

数据预处理知识点汇总

(一) 数据清理 a) 缺失值填充 i. 忽略元组 ii. 手工填写 iii. 自动填充 使用属性均值推理出最可能的值&#xff0c;如贝叶斯公式或决策树 b) 去除离群点 i. 聚类 ii. LOF iii. 回归函数拟合数据 c) 噪音(包括错误和离群)处理 i. 分箱光滑 d) 纠正不一致数据 (二) …

Android支付接入(五):机锋网

前边已经陆续跟大家走了一遍运营商和支付宝付费接入&#xff0c;今天跟大家一起看看机锋网的支付接入。事实上付费接入本身并没有太多须要注意的地方&#xff0c;做的多了以后你会发现套路都是大同小异的。而须要注意的地方在于怎么跟游戏兼容及后期的维护&#xff0c;包含增减…

腾讯广告广点通API接入文档(Android)

官方文档地址 如果能够看懂文档的也没有必要再往下面看了。本篇文章就到此结束。 下面记录的是本人在上面锁踩过的坑&#xff0c;因为我发现Mac电脑上面的联系客服不是我想要的。 本来只是内部使用的文档&#xff0c;后来想想还是公开出来&#xff0c;希望能够帮助到人。进入正…

Linux下的下载工具 axel

下载地址&#xff1a;http://wilmer.gaast.net/main.php/axel.html Axel是命令行下的多线程下载工具&#xff0c;支持断点续传&#xff0c;速度通常情况下是Wget的几倍。 下载后使用如下命令编译安装&#xff1a; #tar zxvf axel-1.0a.tar.gz #cd axel-1.0a/ #./con…

集成学习知识点汇总

为啥叫集成学习 结合多个学习器来完成学习任务。 俗话说就是&#xff0c;团结力量大。 个体学习器可以相同可以不同。如果相同叫同质集成&#xff0c;如果不尽相同叫异质集成。 个体学习器最好满足&#xff1a;好而不同。 所谓好(准确性)&#xff0c;就是个体学习器不能太坏&…

hdu 2028 Lowest Common Multiple Plus

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2028 题目大意&#xff1a;求最小公倍数&#xff0c;用辗转相除法。 1 #include <stdio.h>2 int main ()3 {4 int gcd(int a,int b);5 int a,b,n,i,c;6 while (scanf("%d",&n)…

TreeView

6.遍历TreeView节点(递归算法) private void Page_Load(object sender, System.EventArgs e) { GetAllNodeText(TreeView1.Nodes); } void GetAllNodeText(TreeNodeCollection tnc) { foreach(TreeNode node in tnc) { if(node.Nodes.Count!0) GetAllNodeText(node.Nodes); Res…

FZU 2297 Number theory【线段树/单点更新/思维】

Given a integers x 1, you have to apply Q (Q ≤ 100000) operations: Multiply, Divide. Input First line of the input file contains an integer T(0 < T ≤ 10) that indicates how many cases of inputs are there. The description of each case is given below: …

<软件过程与改进>计算大题考点总结与例题

1.PSP_PROBE估算法 常见考法&#xff1a;给历史数据&#xff0c;需要选择代理规模的估算值和程序规模/所需资源的实际值&#xff0c;用以下公式求得拟合公式参数 然后使用公式计算出未知的程序规模/所需资源 例题 2.PSP过程质量的度量指标_yield 常见考法&#xff1a;给出缺…

c语言exit和return区别,在fork和vfork中使用

转自c语言exit和return区别&#xff0c;在fork和vfork中使用 exit函数在头文件stdlib.h中。 简述&#xff1a; exit&#xff08;0&#xff09;&#xff1a;正常运行程序并退出程序&#xff1b; exit&#xff08;1&#xff09;&#xff1a;非正常运行导致退出程序&#xff1b; r…

WIKI与BLOG殊途同归(转)

现在很多朋友都拥有了自己的BLOG网页&#xff0c;尽管他们可能并不打算走木子美那种写私人日记的路子&#xff0c;但彰显个性、张扬自我的目的&#xff0c;大都类似。其实在这个时候&#xff0c;中国的许多技术迷们已经把目光投向了WIKI。 历经了网络反黄与木子美&#xff0c;中…

Spring MVC中DispatcherServlet理解总结(1)

DispatcherServlet在web.xml中的配置 <context-param><!--默认配置文件为/WEB-INF/[servlet名字]-servlet.xml--><param-name>contextConfigLocation</param-name><param-value>WebApplicationContext的上下文配置</param-value> </con…

功能点度量方法介绍

功能点度量方法是利用软件需求分析度量软件规模。 软件需求分析包括&#xff1a;软件功能需求分析、软件性能需求分析 在需求分析阶段可以利用数据流图和用例图对软件规模进行度量&#xff0c;分别对应功能点度量与用例点度量方法 1.功能点度量方法的分类 第三种 IFPUG是我…

微软2014校园招聘笔试试题

转载请标明出处&#xff0c;原文地址&#xff1a;http://blog.csdn.net/hackbuteer1/article/details/121908071、Which statement(s) is(are) correct about thread and process&#xff1f;Select all that apply.(5 Points) A、Threads share the same address space of the…

vi(vim)快捷键小记

1、前言 vi是“visual interface”的缩写&#xff0c;vim是vi IMproved(增强版的vi)。总结一下自己平时常用的vim快捷键&#xff0c;当是忘记也好&#xff0c;后续会不定期更新。 2、vim 快捷键 快捷键说明vi[m] file打开[新建]文件命令模式可以移动光标、删除字符等h,j,k,l左…

Premiere Pro2.0用DebugMode2.3搭桥小日本4.0输出图解

看图说话&#xff0c;不懂的多试试看首先明确几点&#xff1a;1。3个软件&#xff1a;Premiere Pro2.0、DebugMode&#xff08;帧服务器&#xff09;、小日本&#xff08;TMPGEnc 4.0 XPress&#xff09;2。渲染过程是在小日本中完成&#xff0c;与DebugMode无关&#xff0c;De…

用例点度量方法介绍

用例点度量方法分为6个步骤&#xff0c;分别是 step 1:计算未调整前的角色(执行者)权重 将角色按照复杂程度分为3类&#xff0c;具体如下 则本例中 UAW1121329 计算未调整前的用例权重UUC 有三种评估用例复杂程度的方法&#xff0c;具体如下 以下是用例权重评估表(普通那…

NYOJ——街区最短路径问题

街区最短路径问题 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;4描述一个街区有很多住户&#xff0c;街区的街道只能为东西、南北两种方向。住户只可以沿着街道行走。各个街道之间的间隔相等。用(x,y)来表示住户坐在的街区。例如&#xff08…

Git 中常用的 4 个命令

使用 Git 进行版本管理时&#xff0c;肯定不只做提交&#xff0c;有时候也会需要回退修改&#xff0c;并且在回退的基础上进行重新提交&#xff0c;这时候有几个常用的命令就需要用到了&#xff0c;下面分别做介绍。 1、查看提交日志 首先&#xff0c;我们查看当前提交记录的命…