HUNNU 11786 Sir Charles Antony Richard Hoare
题目链接
Problem description |
Charles Antony Richard Hoare爵士,通常被称为Tony Hoare或者C. A. R. Hoare,英国计算机科学家。1980年,由于其在程序设计语言的基础性贡献(fundamental contributions to the definition and design of programming languages),被ACM授予图灵奖。当然,Hoare爵士最令相关专业学生所熟知的贡献是其在1961年发表的“Quick Sort”算法。 Quick Sort(多么霸气的名字),简单的说就是在待排序列A中选择一个元素a作为pivot并将其移动到合适的位置,使得左边的元素都比其小,右边的元素都比其大。然后再对左、右做递归调用。 别紧张,这道题不是要你写快排,因为你们大部分人估计都写不出来。给定一个序列A,问其中有多少个元素不移动位置本身就可以作为pivot。更具体一点,Ai可以作为pivot,当且仅当:(1)对所有的k<i,满足Ak<=Ai;(2)对所有的k>i,满足Ak>Ai。 |
Input |
输入有多个案例,每个案例2行。第一行是一个正整数N(不超过100000),表示序列中一共有N个数。第二行是N个正整数(不超过100000),每个整数后面一个空格以示分隔。当N为0时表示输入结束,并且无需处理。 |
Output |
每个案例输出一行,为答案。 |
Sample Input |
|
Sample Output |
|
Judge Tips |
hint:在样例中,3/4/8可以作为pivot,共3个。 |
第一次拜访友校oj,界面风格与我湖简直一模一样!!!∑(゚Д゚ノ)ノ然后就挑了道题做(上面这道),没想到一开始没做对超时了。。
可以开两个数组dp1和dp2,dp1[i]保存前i个数最大的值,dp2[i]保存第i到第n个数最小的值,只有a[i]>=dp[i-1]且a[i]<dp[i+1]才能作为一个pivot,然后就能在O(n)时间内解决问题啦,最后只用了578ms。
AC代码:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<iomanip>
#include<vector>
#include<cmath>
#include<stack>
using namespace std;
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;int a[100010],dp1[100010],dp2[100010];while(cin>>n,n>0){memset(dp1,0,sizeof(dp1));memset(dp2,0x7f,sizeof(dp2));for(int i=1;i<=n;i++) cin>>a[i];//dp1[i]表示前i个数最大的数 for(int i=1;i<=n;i++)dp1[i]=max(a[i],dp1[i-1]);//dp2[i]表示第i到n个数中最小的数 for(int i=n;i>=1;i--)dp2[i]=min(a[i],dp2[i+1]);int ans=0;for(int i=1;i<=n;i++)if(a[i]>=dp1[i-1]&&a[i]<dp2[i+1]) ans++;cout<<ans<<endl; }
}
HUNNU 11786 Sir Charles Antony Richard Hoare相关推荐
- 关于计算机语言最高奖项 图灵奖 的12位得主!你认识几个?
图灵奖(Turing Award)于1966年设立,奖励在计算机领域作出杰出贡献的个人(1966年至2019年共73名获奖者).图灵奖的获奖条件极高,评奖程序也极严,每年通常只奖励一名计 ...
- ppt_第一章_德塔自然语言图灵系统
开始组织核心ppt文字描述,图片和源码 在书籍中已经很丰富了. 第一章_德塔自然语言图灵系统 第一章_德塔自然语言图灵系统 分词,排序,神经网络索引,搜索,动态 POS函数流水阀门细化遍历 内核匹配, ...
- 《啊哈!算法》笔记_Day01
临近毕业季,在跳蚤市场收了一本**<啊哈!算法>**,我之前是没有学过算法的,之间就知道这本书的存在,所以看见了它,就毫不犹豫地买它!!!一边看一边写写博客,保留一下自己的学习历程ovo! ...
- 【图文解释】快速排序算法
高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 9 3 ...
- 生产Java应用程序中的十大异常类型-基于1B事件
Pareto记录原理:97%的记录错误语句是由3%的唯一错误引起的 在最新的数据整理帖子之后,我们收到了很多反馈和问题,在该文章中,我们显示97%的记录错误是由10个唯一错误引起的 . 根据普遍的需求 ...
- 代码规范与读写可维护性
某公司员工小 A 即将离职,开始着手交接工作.员工小 B 被点名要求接手原先小 A 的工作.当小 B 打开小 A 独立负责的项目后,瞬间惊呆了--半个月后,小 B 基本消化了小 A 遗留下来的代码,此 ...
- 最给人启迪的30条编程名言
程序员编程需要经验,很多经验可以通过自己的实践来积累,但很多经验知识需要从他人哪里学来. 伟大的编程者就是一本优秀的编程知识来源,从他们哪里,你可以学习到很多高屋建瓴的编程思想.很多他们简练的几句话就 ...
- 5-7课:与二分查找共组双子星座:快速排序
一个"笑话" 网上有个笑话,题目叫做"会快速排序的图书馆大妈",内容如下: 我去省图书馆看见两个志愿者需要把还回来的一堆书按顺序入架. 管理员大妈教他们说:&q ...
- 排序算法 | 快速排序算法原理及实现和优化(一)
快速排序是对冒泡排序的一种改进,由 C.A.R.Hoare(Charles Antony Richard Hoare,东尼·霍尔)在 1962 年提出. 快速排序的基本思想是:通过一趟排序将要排序的数 ...
- 快速排序的原理,实现及特点
快速排序 快速排序算法详解(原理.实现和时间复杂度) 快速排序是对冒泡排序的一种改进,由 C.A.R.Hoare(Charles Antony Richard Hoare,东尼·霍尔)在 1962 年 ...
最新文章
- springboot集成rabbitMQ安装+代码
- oracle11g dataguard windows,Oracle11g 搭建DataGuard(笔记)
- 嵌入式编程之模块化编程
- 数据中心停机事故的教训:关注基础设施
- django19:项目开发流程
- JavaFX UI控件教程(十)之Scroll Bar
- Linux关机运行的脚本,Linux关机时执行指定脚本功能实现
- div中定义局部变量_中高级前端必须要了解的--JS中的内存管理
- 57个深度学习专业术语
- 190715每日一句
- 2021年好看高考倒计时源码
- 富集分析:(一)概述
- 微生物组-扩增子16S分析和可视化(2022.7本周开课)
- 分享招聘工作流程图模板及绘制技巧
- python web py入门(6)-webpy在模板里使用code代码段错误的问题
- windows Server 2012修复(CVE-2016-2183)(CVE-2013-2566)(CVE-2015-2808)
- 软件构造|GRASP模式
- Informatica使用操作流程--缓慢变化维 案例9
- android 四方向摇杆源码,手游摇杆(一)最简单的四方向摇杆
- centos6 安装bbr_centos6 安装 BBR加速教程