CF2045D Aquatic Dragon
题目描述
你居住在一个由 $N$ 个岛屿组成的群岛中,这些岛屿排列成一条直线。岛屿从 $1$ 开始依次编号到 $N$。相邻的岛屿 $i$ 和 $i+1$ 之间有单向水下隧道:一条从岛 $i$ 到 $i+1$,另一条反向。而每条隧道只能走一次。
你和一条龙同行。龙的耐力以非负整数表示,用来施展游泳和飞行能力。初始时,其耐力为 $0$。
每个岛上都有一个魔法神社,当你第一次到达某岛时,会立即将龙的耐力增加 $P_i$(无论龙身处何地)。这个过程无需时间。
在某个岛上,你可以做以下三种移动:
- 如果你和你的龙在同一岛上,可以让龙游到相邻岛屿,前提是龙的耐力至少是 $D$。该操作会消耗耐力 $D$,耗时 $T_s$ 秒。
- 如果你和你的龙在同一岛上,可以让龙飞到相邻岛屿,前提是龙的耐力不为零。此举会将耐力归零,耗时 $T_f$ 秒。
- 你可以单独通过水下隧道步行到相邻岛屿,这需要花费 $T_w$ 秒。一旦你通过这条隧道,就不能再次使用。
请注意,游泳和飞行时不使用隧道。
你和龙当前在岛屿 $1$ 上。你的任务是带着龙到达岛屿 $N$,请计算出任务完成的最短时间。
输入格式
第一行包含五个整数 $N$、$D$、$T_s$、$T_f$ 和 $T_w$,其中 $2 \leq N \leq 200,000$,$1 \leq D, T_s, T_f, T_w \leq 200,000$。
第二行包含 $N$ 个整数 $P_i$,满足 $1 \leq P_i \leq 200,000$。
输出格式
输出一个整数,为到达岛屿 $N$ 的最短时间。
说明/提示
### 示例解释 #1
以下是完成任务的最短事件序列:
1. 在岛 $1$ 的神社将龙的耐力增加到 $1$。
2. 带龙飞到岛 $2$,神社令龙的耐力增至 $2$。
3. 单独走到岛 $3$,神社令龙的耐力增至 $6$。
4. 单独走到岛 $4$,神社令龙的耐力增至 $8$。
5. 单独走回岛 $3$。
6. 单独走回岛 $2$。
7. 带龙游回岛 $3$,此时龙的耐力为 $4$。
8. 带龙游到岛 $4$,此时龙的耐力为 $0$。
9. 单独走到岛 $5$,神社令龙的耐力增至 $1$。
10. 单独走回岛 $4$。
11. 带龙飞到岛 $5$。
### 示例解释 #2
对于 $1 \leq i < 5$,重复以下过程:在岛 $i$ 的神社增加龙的耐力,然后带龙飞到岛 $i+1$。
**本翻译由 AI 自动生成**