第九集,离间计

TimeLimit:1000MS  MemoryLimit:128MB
64-bit integer IO format:%I64d
 
Problem Description

  拥有了超强的体能和跑步速度后,小A的信心极度膨胀。正当他准备潜入特工们的聚会地点套取情报的时候,小A发现组织的守卫非常严密,根本没有漏洞可钻。最后小A只得返回宾馆同小C商量。

通过小C,小A知道了特工组织内有着严谨的等级排名制度,然而这等级并不是严格按照能力来排的,但可怜的特工们并不全都知道。聪明的小A立马想到了离间计,即通过某种方式告知每个特工那些排名比他高但能力比他低的人,刺激低等级的特工去试探高等级的特工,让他们明白后从而引起内乱,但又担心排名相距太大,低排名的特工会因畏惧而连基本的试探也不敢去,毕竟低等级的特工长期处在高等级的特工的淫威下嘛。(不明白小A为什么会知道该组织内部的等阶排名吗?因为小C曾是该组织的内部高层人员…)

现在给出一个序列,序列中的第i个值表示排名为i的特工的能力值,要求求出每个特工的排名前面第一个比他的能力值小的特工的排名,最高排名从0开始,如果不存在,则输出-1

在成功的离间了部分的特工,小A才能更加容易的潜入特工中获取情报、

Input

多组测试数据。

第一行输入一个整数n(0<n<=100000)

接下来有n个数ai(0<=ai<=1000000).ai表示排名为i的员工的能力值(0<=i<n)。

Output

输出n个数,分别表示每个排名为i(0<=i<n)的特工排在其前面且能力值小于他的特工的排名.

SampleInput
1
5
5
1 2 3 4 5
SampleOutput
-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第三周寒假作业《第九集,离间计》栈的更多相关文章

  1. 福建工程学院16级第一周寒假作业E题----第七集,奇思妙想

    第七集,奇思妙想                                                                                            ...

  2. 关于第三次寒假作业之C++Calculator项目的情况:

    一.仓库地址: object-oriented: 二.作业要求: Calculator: 三.完成本次作业的情况及感受: 刚接触到这个题目的时候,自己就是那丈二的和尚,摸不着头脑,由于自己视频找得比较 ...

  3. JAVA第三周课后作业

    JAVA课后作业 一.枚举类型 代码: enum Size{SMALL,MEDIUM,LARGE}; public cl ass EnumTest { public static void main( ...

  4. FJUT16级第一周寒假作业题解D题

    题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P3 第八集,体能训练 TimeLimit:1000MS  MemoryLimit:128M ...

  5. FJUT16级第一周寒假作业题解J题

    题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P9 涨姿势之区间刷新 TimeLimit:2000MS  MemoryLimit:128M ...

  6. Python第三周第一次作业中关于工程目录各种导入的模拟学习

    目录 Python工程目录 导入自定义模块, 包 记录的缘由 模块搜索路径 模块: 导入模块 导入函数 导入类 多个类 @(Python第三周第一次作业中工程目录,模拟学习) Python工程目录 导 ...

  7. FJUT16级第一周寒假作业题解I题

    涨姿势题3 TimeLimit:1000ms  MemoryLimit:128000KB 64-bit integer IO format:%lld Problem Description 涨姿势题就 ...

  8. FJUT16级第一周寒假作业题解G题

    题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P6 涨姿势题1 TimeLimit:1000MS  MemoryLimit:128000K ...

  9. 16级第二周寒假作业H题

    快速幂(三) TimeLimit:2000MS  MemoryLimit:128MB 64-bit integer IO format:%I64d Problem Description 计算( AB ...

随机推荐

  1. JavaScript实现图片轮播图

    <!DOCTYPE html><html> <head> <script > var time; function init(){ //设置定时操作 t ...

  2. spring 依赖注入时,什么时候会创建代理类

    问题来源 以前一直有个疑惑,为什么我创建的controller中注入的service类有时候是代理类,有时候是普通javabean,当时能力不够,现在已经有了点经验就大胆跟了跟源码,看看到底咋回事. ...

  3. Linux(一)VMware虚拟机的安装

    vmware的安装文件: 链接:https://pan.baidu.com/s/1QGjNqRZzE-vV7Af0PI2QYA 密码:omfe 1.1 首先下载安装包 安装包的内容 1.2 双击exe ...

  4. 1.UTF8字符集csv文件在oracle下乱码问题处理

    1.问题描述 在excel中生成了一个UTF-8编码格式的csv文件准备导入数据库,在notpad++下打开显示正常,编码集为UTF-8,通过pl/sql dev导入oracle是出现乱码,此时初步推 ...

  5. 原生js代码挑战之动态添加双色球

    var ballArr = []; //存放已有的红球,用来排除重复和排序window.onload = function(){ var btn = document.createElement(&q ...

  6. javascript/TypeScript 生成GUID

    export const guid = () => { return `xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, functi ...

  7. [LeetCode] Prime Number of Set Bits in Binary Representation 二进制表示中的非零位个数为质数

    Given two integers L and R, find the count of numbers in the range [L, R] (inclusive) having a prime ...

  8. nodejs和vue的那些事

    nodejs >1.旨在提供一种简单的构建可伸缩网络程序的方法 官方网站:http://nodejs.cn/api/ Node.js 是一个基于Chromev8 JavaScript 运行时建立 ...

  9. 【webstorm使用手册】如何安装插件

    Files->Settings, 搜索"plugin",如图,

  10. [JS]手动实现一个横屏滚动公告js插件

    前言 工作中要用到.在github上找的大部分都是竖屏滚动没办法只能自己手动写. 本来只是想随便实现一下的,结果一时兴起把它弄成了一个简单的小插件,开了个github仓库(希望路过点个星) JS横屏滚 ...