FJUT第三周寒假作业《第九集,离间计》栈
第九集,离间计
拥有了超强的体能和跑步速度后,小A的信心极度膨胀。正当他准备潜入特工们的聚会地点套取情报的时候,小A发现组织的守卫非常严密,根本没有漏洞可钻。最后小A只得返回宾馆同小C商量。
通过小C,小A知道了特工组织内有着严谨的等级排名制度,然而这等级并不是严格按照能力来排的,但可怜的特工们并不全都知道。聪明的小A立马想到了离间计,即通过某种方式告知每个特工那些排名比他高但能力比他低的人,刺激低等级的特工去试探高等级的特工,让他们明白后从而引起内乱,但又担心排名相距太大,低排名的特工会因畏惧而连基本的试探也不敢去,毕竟低等级的特工长期处在高等级的特工的淫威下嘛。(不明白小A为什么会知道该组织内部的等阶排名吗?因为小C曾是该组织的内部高层人员…)
现在给出一个序列,序列中的第i个值表示排名为i的特工的能力值,要求求出每个特工的排名前面第一个比他的能力值小的特工的排名,最高排名从0开始,如果不存在,则输出-1
在成功的离间了部分的特工,小A才能更加容易的潜入特工中获取情报、
多组测试数据。
第一行输入一个整数n(0<n<=100000)
接下来有n个数ai(0<=ai<=1000000).ai表示排名为i的员工的能力值(0<=i<n)。
输出n个数,分别表示每个排名为i(0<=i<n)的特工排在其前面且能力值小于他的特工的排名.
1
5
5
1 2 3 4 5
-1
-1 0 1 2 3
n=100W常规遍历,那么每次都要遍历一次,那么复杂度达到O(n2)直接超时,于是我们进行优化。
假设序列为 3 1 2 5 4
遍历到1时,那么之后不论什么情况,能力值最小的特工必定是1,而不可能是3,那么3就可以丢掉了。
于是我们猜想用一个递增序列储存储存下可能是答案的特工。不可能是答案的丢掉。那么我们就想到了栈。然后看一段推到过程。序列表示当前栈元素。

结论:1,当栈空,答案为-1
2,当新元素大于栈顶,答案就是栈顶元素的编号。
3,新元素小于栈顶,那么意味着栈顶已经失去作用了。弹出。继续比较。之后的结果只有两个,结论1和结论2.
用结构储存序列,下标,答案。value代表能力值,num代表数字
核心代码。

FJUT第三周寒假作业《第九集,离间计》栈的更多相关文章
- 福建工程学院16级第一周寒假作业E题----第七集,奇思妙想
第七集,奇思妙想 ...
- 关于第三次寒假作业之C++Calculator项目的情况:
一.仓库地址: object-oriented: 二.作业要求: Calculator: 三.完成本次作业的情况及感受: 刚接触到这个题目的时候,自己就是那丈二的和尚,摸不着头脑,由于自己视频找得比较 ...
- JAVA第三周课后作业
JAVA课后作业 一.枚举类型 代码: enum Size{SMALL,MEDIUM,LARGE}; public cl ass EnumTest { public static void main( ...
- FJUT16级第一周寒假作业题解D题
题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P3 第八集,体能训练 TimeLimit:1000MS MemoryLimit:128M ...
- FJUT16级第一周寒假作业题解J题
题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P9 涨姿势之区间刷新 TimeLimit:2000MS MemoryLimit:128M ...
- Python第三周第一次作业中关于工程目录各种导入的模拟学习
目录 Python工程目录 导入自定义模块, 包 记录的缘由 模块搜索路径 模块: 导入模块 导入函数 导入类 多个类 @(Python第三周第一次作业中工程目录,模拟学习) Python工程目录 导 ...
- FJUT16级第一周寒假作业题解I题
涨姿势题3 TimeLimit:1000ms MemoryLimit:128000KB 64-bit integer IO format:%lld Problem Description 涨姿势题就 ...
- FJUT16级第一周寒假作业题解G题
题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P6 涨姿势题1 TimeLimit:1000MS MemoryLimit:128000K ...
- 16级第二周寒假作业H题
快速幂(三) TimeLimit:2000MS MemoryLimit:128MB 64-bit integer IO format:%I64d Problem Description 计算( AB ...
随机推荐
- centos7 yum相关的常用命令
[root@mini1 ~]# history |grep yum 40 yum repolist 42 cd /etc/yum.repos.d/ 49 yum clean all 50 yum re ...
- centos系统升级PHP版本程序
鉴于Centos 默认yum源的php版本太低了,手动编译安装又有点一些麻烦,那么如何采用Yum安装的方案安装最新版呢.那么,今天我们就来学习下如何用yum安装php最新版. 1.检查当前安装的PHP ...
- SublimeText用FileHeader给代码文件生成头部注释
https://github.com/shiyanhui/FileHeader 修改的模板在这个路径下:C:\Users\[USERNAME]\AppData\Roaming\Sublime Text ...
- phpstorm 快捷键高效助手扩展 常用快捷键收集整理 2018-04-12 16:42:10
声明: 本文属于原创,未经博主许可,禁止任何形式转载! phpstorm 快捷键整理收集 以及高效复用代码快捷键扩展 常规快捷键大全请结合参考2篇博客: https://blog.csdn.net/y ...
- Tensorflow模型加载与保存、Tensorboard简单使用
先上代码: from __future__ import absolute_import from __future__ import division from __future__ import ...
- delphi 10.1 Berlin 中使用自带的 Base64 编码
delphi 10.1 berlin版本中,有好几个 base64 编码的单元可以使用,例如 Indy, MessageDigest_5,还有 CnBase64,我现在使用自带的 System.Net ...
- Spring Cloud学习笔记-007
声明式服务调用:Spring Cloud Feign Feign基于Netflix Feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两 ...
- Multipath在OpenStack中的faulty device的成因及解决(part 1)
| 版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.如有问题,可以邮件:wangxu198709@gmail.com 简介: Multip ...
- 我是如何在公司项目中使用ESLint来提升代码质量的
ESLint:你认识我吗 ESLint是一个语法规则和代码风格的检查工具. 和学习所有编程语言一样,想要入门ESLint,首先要去它的官网看看:https://eslint.org/. ESLint的 ...
- Testlink1.7.5安装部署
Testlink1.7.5安装部署 1 下载安装wamp5:下载地址:http://www.duote.com/soft/56016.html wamp5是apache.mysql.PHP的集成环 ...