P14385 [JOISC 2017] 门票安排 / Arranging Tickets

题目描述

在 JOI 共和国,有 $N$ 个车站,编号从 $1$ 到 $N$。它们按顺时针方向排列在一条环形铁路上。 有 $N$ 种火车票,编号从 $1$ 到 $N$。使用一张类型为 $i$($1 \le i \le N-1$)的票,一个人可以从车站 $i$ 前往车站 $i+1$,或从车站 $i+1$ 前往车站 $i$。使用一张类型为 $N$ 的票,一个人可以从车站 $1$ 前往车站 $N$,或从车站 $N$ 前往车站 $1$。我们只能购买包含每种类型票各一张的票包。 你正在 JOI 共和国的一家旅行社工作。你的任务是为客户安排车票。 今天,你有 $M$ 个订票请求。第 $i$ 个请求表示有 $C_i$ 人希望从车站 $A_i$ 前往车站 $B_i$。这些 $C_i$ 人旅行时无需走相同的路线。 你希望知道,为了满足所有请求,你最少需要购买多少个票包。 **任务** 给定车站数量和请求信息,编写一个程序,计算你最少需要购买的票包数量。

输入格式

从标准输入读取以下数据: - 第一行包含两个由空格分隔的整数 $N$、$M$。表示 JOI 共和国有 $N$ 个车站,今天你有 $M$ 个请求。 - 接下来的 $M$ 行中,第 $i$ 行($1 \le i \le M$)包含三个由空格分隔的整数 $A_i$、$B_i$、$C_i$。表示第 $i$ 个请求是 $C_i$ 人希望从车站 $A_i$ 前往车站 $B_i$。

输出格式

向标准输出写入一行。该行输出包含你最少需要购买的票包数量。

说明/提示

### 样例 1 解释 若所有人都顺时针旅行,则每种票各需一张,因此你只需购买一个票包。 ### 样例 2 解释 若人们按以下方式旅行,则每种票各需三张: - 在第一个请求中,三人顺时针旅行,一人逆时针旅行。 - 在第二个请求中,两人逆时针旅行。 因此,购买三个票包已足够。我们输出 3,因为若仅购买两个票包,则无法完成所有旅行。 ### 样例 3 解释 例如,你购买了两个票包,并按以下方式分配: - 将票 1、2、3 给希望从车站 1 前往车站 4 的人。 - 将票 1、6、5 给希望从车站 2 前往车站 5 的人。 - 将票 3、4、5 给希望从车站 3 前往车站 6 的人。 我们输出 2,因为若仅购买一个票包,则无法完成所有旅行。 ### 约束条件 所有输入数据满足以下条件: - $3 \le N \le 200\,000$。 - $1 \le M \le 100\,000$。 - $1 \le A_i \le N$($1 \le i \le M$)。 - $1 \le B_i \le N$($1 \le i \le M$)。 - $1 \le C_i \le 1\,000\,000\,000$($1 \le i \le M$)。 - $A_i \ne B_i$($1 \le i \le M$)。 ### 子任务 共有 5 个子任务。每个子任务的得分及附加约束如下: **子任务 1 [10 分]** - $N \le 20$。 - $M \le 20$。 - $C_i = 1$($1 \le i \le M$)。 **子任务 2 [35 分]** - $N \le 300$。 - $M \le 300$。 - $C_i = 1$($1 \le i \le M$)。 **子任务 3 [20 分]** - $N \le 3\,000$。 - $M \le 3\,000$。 - $C_i = 1$($1 \le i \le M$)。 **子任务 4 [20 分]** - $C_i = 1$($1 \le i \le M$)。 **子任务 5 [15 分]** 无额外约束。 翻译由 Qwen3-235B 完成