喜欢恋着风 2020-06-02 20:11 采纳率: 0%
浏览 445
已结题

循环队列遍历高效算法?

彩虹
时间限制: 1.0 秒

空间限制: 512 MB

相关文件: 题目目录

题目描述

琦琦有很多颗彩虹糖,每一颗彩虹糖有一个美味度(是不超过 109 的非负整数),不同的彩虹糖可能有相同的美味度。


初始时,琦琦将所有的彩虹糖排成一个环,并会依次告诉你环上每颗糖的美味度。之后的每秒钟,琦琦会找出美味度极大的若干颗彩虹糖,并把它们同时吃掉。“极大”在这里指:如果某颗糖的美味度同时大于等于与它相邻的两颗糖的美味度,则认为这颗糖为美味度极大。(注:如果在某个时刻仅剩两颗糖,则这两颗糖互为相邻;如果在某个时刻仅剩一颗糖,则它“相邻的两颗糖”均为自己,从而这颗糖在这秒钟一定会被吃掉。)

容易发现,最终的情况一定是所有的糖都被吃掉了,而不会有剩余。琦琦想知道,每颗糖是在第几秒被吃掉的?

琦琦还要忙着去给乔乔买棒棒糖吃,这么简单的任务当然就交给你来完成啦!

输入格式
从标准输入读入数据。

第一行输入一个整数 n,表示彩虹糖的数量。

第二行输入 n 个空格隔开的整数,依次表示每颗彩虹糖的美味度。注意:所有的彩虹糖形成了一个环,第一个与最后一个输入的彩虹糖初始时也是相邻的。

输出格式
输出到标准输出。

输出 n 行,每行一个整数,依次表示每颗糖是在第几秒被吃掉的。

样例1输入

7

1 3 2 4 2 3 1

样例1输出

3

1

2

1

2

1

3

子任务
非公开与公开数据各 10 个测试点,分布相同。每 10 个测试点中的 n 分别为:

1000

2000

5000

10000

20000

50000

100000

200000

500000

1000000

提示
请自己设计高效完成此题所需的数据结构,例如数组、链表、栈、队列、优先队列等。

本题可能有多种不同的解题思路。

有些解题思路中,可能需要有多个数据结构配合完成此题,而非仅在单个数据结构上进行操作。

允许并鼓励使用 STL 中的相关内容。

  • 写回答

2条回答 默认 最新

  • threenewbee 2020-06-02 23:36
    关注

    要高效,可以考虑使用双向循环链表来表示循环队列
    https://blog.csdn.net/beautiful_face/article/details/60762947

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器