P1021推翻暴政revolt

时间限制 2000 ms内存限制 512 MiB通过率 —
显示算法标签动态规划 · 线段树

【题目背景】

古道重新显现后,tfbz 集结了反抗萨米旧都的同伴。为了避开守卫,他们必须从城外的渡口尽快渡河,潜入旧都。

【题目描述】

共有 nn 名同伴按照编号 1n1\sim n 依次来到渡口,保证 nn 为奇数。第 ii 名同伴独自渡河需要 aia_i 单位时间。

渡口位于旧都守卫视线之外,却十分狭窄,同伴们只能按照事先约定的顺序分批赶到。tfbz 无法改变他们的到达顺序,只能决定每次由谁先乘船离开。

最初,渡口中只有第 11 名同伴。此后,每当轮到下一批同伴抵达,tfbz 必须按照以下过程作出选择:

  • 每次有接下来的两名同伴同时到达渡口;
  • 此时渡口中恰好有三名同伴;
  • 必须从中选择两名同伴共同乘船渡河;
  • 若选择第 i,ji,j 名同伴共同渡河,需要花费 max(ai,aj)\max(a_i,a_j) 单位时间;
  • 没有被选择的那名同伴继续留在渡口,等待下一批两名同伴。

共同渡河的两名同伴会直接抵达对岸,不再回到渡口;留下的一人则会与下一批到达的两名同伴再次组成三人。这个过程一直重复,直到所有同伴都已经到达。

此时,渡口中只会剩下一名同伴。他需要独自渡河,花费 aia_i 单位时间。

只要所有人都抵达对岸,tfbz 就能带领他们潜入萨米旧都,正式开始推翻暴政的行动。他想知道,怎样安排每次共同渡河的两名同伴,才能使所有人渡河所需的总时间最少。

【输入格式】

从文件 revolt.in\textbf{\textit{revolt.in}} 中读入数据。

第一行一个正奇数 nn,表示参与行动的同伴数量。

第二行 nn 个正整数 a1,a2,,ana_1,a_2,\ldots,a_n,其中 aia_i 表示第 ii 名同伴独自乘船渡河所需的时间。

【输出格式】

输出到文件 revolt.out\textbf{\textit{revolt.out}} 中。

输出一行一个整数,表示所有同伴全部渡过河流所需的最少总时间。

【样例 1 输入】

54 2 7 3 6

【样例 1 输出】

14

【说明/提示】

【样例 1 解释】

最初,编号为 1,2,31,2,3 的同伴位于渡口。可以选择第 1,21,2 名同伴共同渡河,花费 max(4,2)=4\max(4,2)=4 单位时间,此时第 33 名同伴继续留在渡口。

随后第 4,54,5 名同伴同时到达。选择第 3,53,5 名同伴共同渡河,花费 max(7,6)=7\max(7,6)=7 单位时间,留下第 44 名同伴。最后,第 44 名同伴独自渡河,花费 33 单位时间。

总时间为 4+7+3=144+7+3=14。可以证明不存在总时间更少的渡河方案。

【样例 2】

见选手目录下的 revolt/revolt2.in\textbf{\textit{revolt/revolt2.in}}revolt/revolt2.ans\textbf{\textit{revolt/revolt2.ans}}

该组样例符合测试点 141\sim 4 的数据范围。

【样例 3】

见选手目录下的 revolt/revolt3.in\textbf{\textit{revolt/revolt3.in}}revolt/revolt3.ans\textbf{\textit{revolt/revolt3.ans}}

该组样例符合测试点 595\sim 9 的数据范围。

【样例 4】

见选手目录下的 revolt/revolt4.in\textbf{\textit{revolt/revolt4.in}}revolt/revolt4.ans\textbf{\textit{revolt/revolt4.ans}}

该组样例符合测试点 101410\sim 14 的数据范围。

【样例 5】

见选手目录下的 revolt/revolt5.in\textbf{\textit{revolt/revolt5.in}}revolt/revolt5.ans\textbf{\textit{revolt/revolt5.ans}}

该组样例符合测试点 151915\sim 19 的数据范围。

【样例 6】

见选手目录下的 revolt/revolt6.in\textbf{\textit{revolt/revolt6.in}}revolt/revolt6.ans\textbf{\textit{revolt/revolt6.ans}}

该组样例符合测试点 202520\sim 25 的数据范围。

【数据范围】

对于 100%100\% 的数据,保证:nn 为奇数,1n2×1051\leq n\leq 2\times10^51ai1091\leq a_i\leq 10^9

测试点编号nn{ai}|\{a_i\}|特殊性质
141\sim 415\leq 15n\leq n
595\sim 92000\leq 2000n\leq n
101410\sim 142×105\leq 2\times10^5n\leq nA
151915\sim 192×105\leq 2\times10^5100\leq 100B
202520\sim 252×105\leq 2\times10^5n\leq n

特殊性质 A:满足 a1a2ana_1\leq a_2\leq\cdots\leq a_n

特殊性质 B:序列 aa 中至多有 100100 种不同的数值。

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解