#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;}}

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

  1. CCF CSP202012-2期末预测之最佳阈值

    CCF CSP202012-2期末预测之最佳阈值 题目背景 考虑到安全指数是一个较大范围内的整数.小菜很可能搞不清楚自己是否真的安全,顿顿决定设置一个阈值 θ,以便将安全指数 y 转化为一个具体的预测 ...

  2. CSP202012-2 期末预测之最佳阈值(100分)【序列处理】

    试题编号: 202012-2 试题名称: 期末预测之最佳阈值 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 样例1输入 6 0 0 1 0 1 1 3 1 5 1 7 1 样例1输出 ...

  3. @3-2 CCF 2020-12-2 期末预测之最佳阈值

    期末预测之最佳阈值 题目描述 输入与输出 样例 源代码 关于这题 题目描述 输入与输出 样例 源代码 #include<iostream> #include<algorithm> ...

  4. ccf-csp认证期末预测之最佳阈值(2020年12月13日)

    期末预测之最佳阈值 题目描述 具体来说,顿顿评估了

  5. ccf-csp认证2020-12-2期末预测之最佳阈值: 一种简单解法

    ccf-csp认证2020-12-2期末预测之最佳阈值: 一种简单解法 期末预测之最佳阈值 题目描述 输入输出格式 样例及解释 数据提示 解题思路 代码 期末预测之最佳阈值 自己的第一篇博客.已经大三 ...

  6. CCF-CSP 202012-2 期末预测之最佳阈值 (Python)

    题目背景 考虑到安全指数是一个较大范围内的整数.小菜很可能搞不清楚自己是否真的安全,顿顿决定设置一个阈值 θ \theta θ,以便将安全指数 y y y 转化为一个具体的预测结果--"会挂 ...

  7. 第21次CCF计算机软件能力认证【期末预测之最佳阈值】【期末预测之安全指数】

    期末预测之安全指数 题目描述 首先,顿顿选取了如"课堂表现"."自习时长"."作业得分"."社团活动参与度"等

  8. CSP认证202012-2 期末预测之最佳阈值[C++题解]:遍历、前缀和

    文章目录 题目解答 暴力做法70分 前缀和优化100分 题目链接 题目解答 暴力做法70分 70分代码 思路:排序,依次枚举阈值,然后遍历:对于每个值,大于等于该阈值的话,查看结果是否为1:小于该阈值 ...

  9. CCF-2020-12-2 期末预测之最佳阈值(低俗题)-你留的眼泪,我来帮你拭去~~~

    CCF-2020-12-2 写在前面 我们看看题目肿么说! 初心,第一想法 代码和运行结果如下 前缀和才是这个题目的真正考点 我们理解一下前缀和 代码和运行结果如下 哎,反正我今天是低俗了一把 这都是 ...

最新文章

  1. ssh(Struts+spring+Hibernate)三大框架整合-简述
  2. 存clob为空的值_将网页文本(HTML)保存到ORACLE数据库CLOB字详解
  3. linux下网卡状态,linux-网络状态
  4. jira 审批流程_博兴县行政审批服务局推暖心服务工程 企业开办实现“全程网办”_博兴新闻...
  5. Java---形参个数可变的方法
  6. spark加盐(salting)操作
  7. 「假期余额不足」安排用Python写个时间在线生成器 快夸我
  8. 如何对memcache的数据(key-value)进行遍历操作
  9. 【php】mysql全局ID生成方案
  10. web视频播放插件:Video For Everybody
  11. Unity3d笔记——制作简单动画
  12. 开源Java CMS建站程序推荐
  13. 已解决-Excel选择多个单元格,只有计数,没有合计和平均值
  14. 数学模板-BSGSEXBSGS
  15. 如何用Python实现股票量化交易?
  16. 微信双开方法windows Mac iOS
  17. 2022-2028年中国电源滤波器行业市场发展规模及未来趋势预测报告
  18. 桌面端如何运行小程序?
  19. 你知道5分钟法则和10字节法则么?
  20. 即食花胶的功效与作用 即食花胶怎么吃?

热门文章

  1. iOS动画进阶 - 手摸手教你写ShineButton动画
  2. Linux下Shell日期的格式
  3. Web.XML文件中关于代码提示的一些问题
  4. mysql======基本的数据查询(1)
  5. leetcode -- 3 sum
  6. android zip解压缩(含有子目录)
  7. D3D中简单的截图方法 (转)
  8. 第一篇文章,做个纪念
  9. iOS处理高并发量的数据请求和数据集合的对应关系
  10. Windows下搭建PHP开发环境