题目链接

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
8
2 1 3 4 7 5 6 8
0
Sample Output
3
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相关推荐

  1. 关于计算机语言最高奖项 图灵奖 的12位得主!你认识几个?

           图灵奖(Turing Award)于1966年设立,奖励在计算机领域作出杰出贡献的个人(1966年至2019年共73名获奖者).图灵奖的获奖条件极高,评奖程序也极严,每年通常只奖励一名计 ...

  2. ppt_第一章_德塔自然语言图灵系统

    开始组织核心ppt文字描述,图片和源码 在书籍中已经很丰富了. 第一章_德塔自然语言图灵系统 第一章_德塔自然语言图灵系统 分词,排序,神经网络索引,搜索,动态 POS函数流水阀门细化遍历 内核匹配, ...

  3. 《啊哈!算法》笔记_Day01

    临近毕业季,在跳蚤市场收了一本**<啊哈!算法>**,我之前是没有学过算法的,之间就知道这本书的存在,所以看见了它,就毫不犹豫地买它!!!一边看一边写写博客,保留一下自己的学习历程ovo! ...

  4. 【图文解释】快速排序算法

    高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6  1  2 7  9  3   ...

  5. 生产Java应用程序中的十大异常类型-基于1B事件

    Pareto记录原理:97%的记录错误语句是由3%的唯一错误引起的 在最新的数据整理帖子之后,我们收到了很多反馈和问题,在该文章中,我们显示97%的记录错误是由10个唯一错误引起的 . 根据普遍的需求 ...

  6. 代码规范与读写可维护性

    某公司员工小 A 即将离职,开始着手交接工作.员工小 B 被点名要求接手原先小 A 的工作.当小 B 打开小 A 独立负责的项目后,瞬间惊呆了--半个月后,小 B 基本消化了小 A 遗留下来的代码,此 ...

  7. 最给人启迪的30条编程名言

    程序员编程需要经验,很多经验可以通过自己的实践来积累,但很多经验知识需要从他人哪里学来. 伟大的编程者就是一本优秀的编程知识来源,从他们哪里,你可以学习到很多高屋建瓴的编程思想.很多他们简练的几句话就 ...

  8. 5-7课:与二分查找共组双子星座:快速排序

    一个"笑话" 网上有个笑话,题目叫做"会快速排序的图书馆大妈",内容如下: 我去省图书馆看见两个志愿者需要把还回来的一堆书按顺序入架. 管理员大妈教他们说:&q ...

  9. 排序算法 | 快速排序算法原理及实现和优化(一)

    快速排序是对冒泡排序的一种改进,由 C.A.R.Hoare(Charles Antony Richard Hoare,东尼·霍尔)在 1962 年提出. 快速排序的基本思想是:通过一趟排序将要排序的数 ...

  10. 快速排序的原理,实现及特点

    快速排序 快速排序算法详解(原理.实现和时间复杂度) 快速排序是对冒泡排序的一种改进,由 C.A.R.Hoare(Charles Antony Richard Hoare,东尼·霍尔)在 1962 年 ...

最新文章

  1. springboot集成rabbitMQ安装+代码
  2. oracle11g dataguard windows,Oracle11g 搭建DataGuard(笔记)
  3. 嵌入式编程之模块化编程
  4. 数据中心停机事故的教训:关注基础设施
  5. django19:项目开发流程
  6. JavaFX UI控件教程(十)之Scroll Bar
  7. Linux关机运行的脚本,Linux关机时执行指定脚本功能实现
  8. div中定义局部变量_中高级前端必须要了解的--JS中的内存管理
  9. 57个深度学习专业术语
  10. 190715每日一句
  11. 2021年好看高考倒计时源码
  12. 富集分析:(一)概述
  13. 微生物组-扩增子16S分析和可视化(2022.7本周开课)
  14. 分享招聘工作流程图模板及绘制技巧
  15. python web py入门(6)-webpy在模板里使用code代码段错误的问题
  16. windows Server 2012修复(CVE-2016-2183)(CVE-2013-2566)(CVE-2015-2808)
  17. 软件构造|GRASP模式
  18. Informatica使用操作流程--缓慢变化维 案例9
  19. android 四方向摇杆源码,手游摇杆(一)最简单的四方向摇杆
  20. centos6 安装bbr_centos6 安装 BBR加速教程

热门文章

  1. realityOS会是苹果的新操作系统吗?
  2. 题解 CF1389B 【Array Walk】
  3. 【105】百度脑图-在线思维导图工具
  4. 怎么架设魔兽世界服务器?
  5. html中td是什么模块,html td什么意思
  6. 鹿晗关晓彤公开恋情,是如何把微博服务器搞炸的? 鹿晗关晓彤公开恋情,是如何把微博服务器搞炸的? 题图:《盗墓笔记》 鹿晗关晓彤公开恋情,是如何把新浪微博的服务器搞垮的? 知友:苏莉安(200+
  7. 云数智驱动数据高速增长,浪潮存储提供EB级容量扩展
  8. php读取加密表格,Excel表格如何加密
  9. response设置token
  10. 第二次作业-语言和文法