#P10051. [CCO2022] Rainy Markets

    ID: 9428 远端评测题 1500ms 1024MiB 尝试: 0 已通过: 0 难度: 4 上传者: 标签>动态规划,dp贪心2022Special JudgeCCO

[CCO2022] Rainy Markets

题目背景

由于数据包过大,本题无法上传全部数据。

题目描述

NN 个公交车站,标号为 1,,N1, \ldots, N。第 ii 个公交车站可以容纳 BiB_{i} 个人。

对于每个 i{1,,N1}i \in\{1, \ldots, N-1\},有一条人行道连接公交车站 ii 和公交车站 i+1i+1,中间有一个露天市场。第 ii 个市场有 UiU_{i} 把雨伞出售,每把雨伞的价格为 $1\$ 1

现在,有 PiP_{i} 个人在第 ii 个市场里面,所有的公交车站都是空的。

突然,天开始下雨,市场 ii 的每个人都必须在三种方案中选择一种:

  • 去公交车站 ii
  • 去公交车站 i+1i+1
  • 留下来买一把雨伞。

如果一个人无法在某个公交车站下或者买一把雨伞,他们就会淋湿。

你需要回答如果在最优的安排方案下,能否确保每个人都能不被雨淋湿。如果是的话,你需要给出他们需要花费的最少的钱,以及每个人应该移动到哪个公交车站。

输入格式

第一行包含一个整数 NN

第二行包含 NN 个用空格分隔的整数 Bi (1iN)B_{i}\ (1 \leq i \leq N),表示公交车站 ii 的容量。

第三行包含 N1N-1 个用空格分隔的整数 Pi (1iN1)P_{i}\ (1 \leq i \leq N-1),表示市场 ii 的人数。

第四行包含 N1N-1 个用空格分隔的整数 Ui (1iN1)U_{i}\ (1 \leq i \leq N-1),表示市场 ii 出售的雨伞的数量。

输出格式

如果每个人都能在雨伞或公交车站下,输出 N+1N+1 行:

  • 第一行输出一行 YES
  • 第二行输出一个整数,表示包含在雨伞上花费的最少的钱。
  • 接下来的 N1N-1 行,每行输出三个用空格分隔的整数分别表示市场 i (1iN1)i\ (1\leq i \leq N-1) 移动到公交车站 ii 的人数,市场 ii 买雨伞的人数,市场 ii 移动到公交车站 i+1i+1 的人数。

如果有多种合法方案,你可以输出任意一种。

否则,输出一行 NO

3
10 15 10
20 20
0 0
NO
3
10 15 10
20 20
0 11
YES
5
10 0 10
5 5 10

提示

样例 1 解释

公交车站有 3535 个空位,没有雨伞出售,但市场有 4040 个人,所以答案是 NO

样例 2 解释

市场 11 中的 1010 个人会去公交车站 11,没有人会买雨伞,1010 个人会去公交车站 22

市场 22 中的 55 个人会去公交车站 2255 个人会留下来买雨伞,1010 个人会移动到公交车站 33

总共购买了 55 把雨伞,花费了 $5\$ 5

数据范围

对于所有的数据,有 2N1062 \leq N \leq 10^{6}0Bi21090 \leq B_{i} \leq 2 \cdot 10^{9}0Pi,Ui1090 \leq P_{i},U_{i} \leq 10^{9}

子任务编号 分值 NN BB PP UU
11 2020 2N1062 \leq N \leq 10^{6} $0 \leq B_{i} \leq 2 \cdot 10^{9} $ 0Pi1090 \leq P_{i} \leq 10^{9} Ui=0U_{i}=0
22 2N20002 \leq N \leq 2000 0Bi4000 \leq B_{i} \leq 400 $ 0 \leq P_{i} \leq 200$ 0Ui2000 \leq U_{i} \leq 200
33 2424 2N40002 \leq N \leq 4000 0Bi40000 \leq B_{i} \leq 4000 0Pi20000 \leq P_{i} \leq 2000 0Ui20000 \leq U_{i} \leq 2000
44 3636 2N1062 \leq N \leq 10^{6} 0Bi21090 \leq B_{i} \leq 2 \cdot 10^{9} 0Pi1090 \leq P_{i} \leq 10^{9} 0Ui1090 \leq U_{i} \leq 10^{9}