QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 512 MB 總分: 100

#12780. 弹珠台

统计

Alice 喜欢玩一款名为“弹珠台”(Pinball)的电子游戏。弹珠台的游戏规则如下:

弹珠台的棋盘是一个 $(M + 2)$ 行 $N$ 列的方格网。棋盘的第一行是顶部,第 $(M + 2)$ 行是底部。第 $i$ 行第 $j$ 列的方格记作 $(i, j)$。

一个小球会出现在第一行的某个方格中,并垂直向下落向棋盘底部。也就是说,如果一个小球出现在方格 $(1, i)$ ($1 \le i \le N$),它将穿过 $(j, i)$ ($2 \le j \le M + 1$),并最终到达底部的 $(M + 2, i)$。当 Alice 成功击回小球时,她会获得分数。

有一天,Alice 发现很难击回小球,因为小球可能会到达底部的任何一个方格。Alice 决定在棋盘上适当地放置一些装置,使得小球最终只能到达底部的一个特定方格。

棋盘上共有 $M$ 个编号为 $1$ 到 $M$ 的装置。每个装置都与棋盘的行平行。第 $i$ 个装置 ($1 \le i \le M$) 位于第 $(i + 1)$ 行,覆盖了从 $(i + 1, A_i)$ 到 $(i + 1, B_i)$ 的方格。因此,它总共覆盖了 $(B_i - A_i + 1)$ 个方格。当小球到达该装置覆盖的任意方格时,它会被转移到方格 $(i + 1, C_i)$ ($A_i \le C_i \le B_i$)。此后,被转移的小球将沿第 $C_i$ 列垂直向下移动。每个装置与一个小球的交互不会超过一次。

她需要支付 $D_i$ 日元来在棋盘上放置第 $i$ 个装置 ($1 \le i \le M$)。她将选择 $M$ 个装置中的一部分放置在棋盘上,使得小球最终只能到达底部的一个方格。她希望通过高效地放置装置来最小化总成本。

图:弹珠台棋盘示例。$M = 2, N = 4$。一个小球出现在第一行的方格 $(1, 2)$。然后,小球移动到 $(2, 2)$,并被装置 1 转移到 $(2, 3)$。它最终到达底部的方格 $(4, 3)$。

输入格式

从标准输入读取以下数据:

  • 第一行包含两个空格分隔的整数 $M, N$。这意味着棋盘有 $(M + 2)$ 行和 $N$ 列,装置数量为 $M$。
  • 接下来的 $M$ 行中,第 $i$ 行 ($1 \le i \le M$) 包含四个空格分隔的整数 $A_i, B_i, C_i, D_i$。这意味着第 $i$ 个装置位于第 $(i + 1)$ 行,覆盖了从 $(i + 1, A_i)$ 到 $(i + 1, B_i)$ 的方格。第 $i$ 个装置将到达这些方格之一的小球转移到 $(i + 1, C_i)$。放置第 $i$ 个装置的成本为 $D_i$ 日元。

输出格式

输出一行到标准输出。该输出应包含一个整数,表示为了使小球最终只能到达底部的一个方格,放置装置所需的最少总成本。如果无法通过放置装置满足这些条件,则输出 -1。

数据范围

所有输入数据满足以下条件:

  • $1 \le M \le 100\,000$。
  • $2 \le N \le 1\,000\,000\,000$。
  • $1 \le A_i \le C_i \le B_i \le N$ ($1 \le i \le M$)。
  • $1 \le D_i \le 1\,000\,000\,000$ ($1 \le i \le M$)。

子任务

子任务 1 [11 分]

满足以下条件: $M \le 10$。 $N \le 1\,000$。

子任务 2 [18 分]

满足以下条件: * $M \le 200$。

子任务 3 [22 分]

满足以下条件: * $M \le 1\,000$。

子任务 4 [49 分]

无附加限制。

样例

样例输入 1

5 6
2 4 3 5
1 2 2 8
3 6 5 2
4 6 4 7
2 4 3 10

样例输出 1

25

样例输入 2

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

样例输出 2

-1

说明

在样例 1 中,如果放置五个装置中的 2, 4, 5 号装置,棋盘状态如下图所示。此时,出现在第一行任意方格的小球最终都会到达底部的方格 $(7, 3)$。放置这些装置的总成本为 25 日元。由于无法以低于 25 日元的成本使小球最终只能到达底部的一个方格,因此输出 25。

在样例 2 中,无法通过放置装置使得小球最终只能到达底部的一个方格,因此输出 -1。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.