题目 20411

两倍

查看题解 ↗GitHub ↗如何评测
题号
20411
时间限制
1000 ms
内存限制
256 MB
标签
比赛CSP-S
来源
CSP-S 国外模拟赛 33 - T1

第 1 题 两倍 (double)

时间限制 1.0 s · 空间限制 256 MB · 74 个测试点 · 全文比较(过滤行末空格及文末回车)

本题使用文件输入输出:输入文件 double.in,输出文件 double.out。

按照署名—非商业性使用—相同方式共享 4.0 协议国际版进行授权。

题目描述

给定一个长度为 NN 的正整数序列 A1,A2,…,ANA_1, A_2, \dots, A_N。现在希望将该序列变为升序排列。所谓升序排列,是指对于所有的 ii(1≤i≤N−11 \le i \le N - 1),都有 Ai≤Ai+1A_i \le A_{i+1}。

为了将序列 AA 排成升序,可以对序列执行以下操作若干次(可为零次):

  • 对于某个 ii(1≤i≤N1 \le i \le N),将 AiA_i 乘以 22。

你的任务是以最小的操作次数将序列 AA 排成升序,并输出所需的最小操作次数。

输入格式

第一行输入一个整数 NN。

第二行输入 NN 个整数,表示 A1,A2,…,ANA_1, A_2, \dots, A_N,以空格分隔。

输出格式

输出一个整数,表示将序列变为升序所需的最小操作次数。

样例

样例 1

输入:

文本
5
3 1 4 1 5

输出:

文本
4

样例 2

输入:

文本
5
3 1 5 1 5

输出:

文本
6

样例 3

输入:

文本
5
1 2 3 4 5

输出:

文本
0

提示

样例 1 说明

对 A2A_2 和 A4A_4 各执行两次操作后,序列变为 [3,4,4,4,5][3, 4, 4, 4, 5]。

样例 2 说明

对 A2A_2 操作两次,A4A_4 操作三次,A5A_5 操作一次,最终序列为 [3,4,5,8,10][3, 4, 5, 8, 10]。

数据范围

约束条件

  • 所有给定的数均为整数。
  • 1≤N≤250 0001 \le N \le 250\,000
  • 1≤Ai≤1 000 0001 \le A_i \le 1\,000\,000,其中 1≤i≤N1 \le i \le N

子问题

  1. (12 分)对于所有 ii(1≤i≤N1 \le i \le N),Ai=1A_i = 1 或 Ai=2A_i = 2
  2. (10 分)对于所有 ii(1≤i≤N1 \le i \le N),存在非负整数 kik_i,使得 Ai=2kiA_i = 2^{k_i}
  3. (11 分)N≤10N \le 10
  4. (19 分)对于所有 ii(1≤i≤N1 \le i \le N),Ai=2A_i = 2 或 Ai=3A_i = 3
  5. (20 分)对于所有 ii(1≤i≤N−11 \le i \le N - 1),Ai≥Ai+1A_i \ge A_{i+1}
  6. (28 分)无额外限制条件

翻译由 ChatGPT-4o 完成

数据下载

题目 20411 的公开数据

正在读取文件列表…

常用命令

题目 20411 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。