题库/X0032

#X0032. [CSP-X2025 山东] 勇者斗恶龙

    传统题 难度: 普及 标签>CSP-X受限一维DP建模状态定义、转移与边界中间结果范围与安全类型提升
时间限制1000 ms
内存限制512 MiB
通过率—0 / 0 次提交
题目描述 查看题解 开始编程Alt+E

X0032 · [CSP-X2025 山东] 勇者斗恶龙

退出在线编程模式
普及 读懂题意,让每一次思考成为成长。
时间限制1000 ms
内存限制512 MiB
通过率—0 / 0 次提交

题目描述

为了拯救世界,勇者们终于来到了恶龙面前。

现在有 nn 位勇者排成一列准备迎战恶龙,勇者们位置事先已经排好不能改变,第 ii 位勇者的初始能力值为 aia_i,且每提升 1 点能力值,需要花费 bib_i 的代价。

但是如果任意相邻的两位勇者能力值相同,他们之间就会产生冲突从而导致战力大幅下降。

你可以通过提升勇者的能力值,来确保队伍中任意相邻的两名勇者能力值都不相同,从而以完美的状态迎接恶龙。

你只需要计算并输出满足条件所花费的最小的总代价。

输入格式

第一行一个整数 nn,表示勇士的数量。

接下来 nn 行,每行两个数 ai,bia_i, b_i 分别表示第 ii 位勇士的初始能力值和每提升 1 点能力值需要花费的代价。

输出格式

一行一个整数表示答案。

3
1 5
1 2
2 3
4
3
1 10
1 100
1 20
30

说明与数据范围

【样例 1 解释】

如果把第一个勇者能力值增加 11,三位勇者的能力值变成 (2,1,2)(2, 1, 2),花费代价 55。

如果把第二个勇者能力值增加 22,三位勇者的能力值变为 (1,3,2)(1, 3, 2),花费代价 44。

如果把第二个勇者能力值增加 11,第三个勇者的能力值增加 11,三位勇者的能力值变为 (1,2,3)(1, 2, 3),花费代价 55。

因此最小花费的代价为 44,可以证明没有更小的代价能满足条件。

【样例 2 解释】

可以分别提升第一位和第三位勇士的能力值 1 点,最小总花费为 30。

【样例 3】

见选手目录下的 hero/ex_hero3.in 与 hero/ex_hero3.ans。

该样例满足数据范围中测试点第 9~10 的限制。

【样例 4】

见选手目录下的 hero/ex_hero4.in 与 hero/ex_hero4.ans。

该样例满足数据范围中测试点第 11~12 的限制。

【样例 5】

见选手目录下的 hero/ex_hero5.in 与 hero/ex_hero5.ans。

该样例满足数据范围中测试点第 13~20 的限制。

【数据范围】

测试点 n≤n \le 1≤ai,bi≤1 \le a_i, b_i \le 特殊性质
1∼41\sim 4 1010 1010 无
5∼85\sim 8 100100
9∼109\sim 10 10510^5 ai=1a_i = 1
11∼1211\sim 12 bi=1b_i = 1
13∼2013\sim 20 2×1052 \times 10^5 10910^9 无

来源与本地评测说明

来源:洛谷 B4428。题面按来源整理,源题号保留。

本地测试数据自行构造,经过独立 Python 基准、边界对拍及 Linux C++17 沙箱核验,并非洛谷原版完整评测数据。本地训练分值归一为100分。原题提及但未提供的选手目录附件样例不在本地附件中;本页列出的输入输出样例完整保留。