#P13294. [GCJ 2013 #2] Ticket Swapping
[GCJ 2013 #2] Ticket Swapping
Description
这座城市新建成了第一条地铁线,共有 个车站,并引入了一种新的计费方式。乘客不再只需购买一张票随意乘车,而是基于进站卡来计费。
当乘客进入地铁时,会领取一张进站卡,卡上标明了乘客进站的车站编号。当乘客出站时,需交回进站卡,并根据进站卡上标明的进站站点与实际出站站点之间的距离(即经过的车站数)计费,具体计费方式如下:
- 若进出站为同一车站,不收费;
- 若进出站为相邻车站,收费 英镑;
- 若间隔 个车站,则收费 :第一站 ,第二站 ;
- 第三站收费 (即三站共收费 ),第四站 ,第 站收费 ;
- 因此,如果从地铁一端坐到另一端(共 站),最后一站收费 英镑,总计收费 英镑。
引入该系统后,城市发现收入没有预期的高。他们意识到,这可能是因为有人在途中交换了进站卡。例如,某人从车站 上车,坐两站到 下车,另一人从 上车,坐三站到 下车,正常情况下总共需支付 。但如果两人在 交换进站卡,则第一个人出站时交回写有 的进站卡,相当于免费出站;第二个人在 下车时交回写有 的进站卡,相距 站,收费为 ,城市因此损失 英镑。
现在城市想知道,如果这种行为普遍发生,他们最多可能损失多少钱。我们只考虑同一方向(从车站 到车站 ,依次经过所有车站)的一趟列车。假设一名乘客从 站到 站,会在 站领取进站卡,可以在 到 之间的任意位置与其他乘客交换进站卡(包括与在 下车或在 上车的人交换),然后在 站下车时交回一张进站卡(必须交卡才能出站)。假设乘客在此期间不会中途下车(即不会交卡再重新领卡)。
给定所有乘客的出发和终点信息(每一对出发、终点及人数),请你计算在所有人都最大化交换进站卡以使城市损失最大时,城市可能遭受的总损失。
Input Format
输入的第一行为测试用例数 。接下来是 组测试数据。每组测试数据第一行为车站数 和出发-终点对数 。接下来 行,每行三个数:出发站 ,终点站 ,以及该线路上人数 。
Output Format
对于每个测试用例,输出一行 "Case #$x$: $y",其中 为测试用例编号(从 开始), 为由于换卡导致城市可能遭受的最大损失,对 取模。
3
6 2
1 3 1
3 6 1
6 2
1 3 2
4 6 1
10 2
1 7 2
6 9 1
Case #1: 6
Case #2: 0
Case #3: 10
Hint
样例说明
第一个测试用例即题面描述中的例子——两名乘客在车站 会面并交换了进站卡。第二个测试用例中,两组乘客没有会面机会,因此无法交换进站卡(城市没有损失)。第三个测试用例中,只有一部分早下车的乘客可以和后上车的乘客交换进站卡。
限制条件
小数据集(8 分,测试集 1 - 可见)
大数据集(11 分,测试集 2 - 隐藏)
翻译由 ChatGPT-4.1 完成。
京公网安备 11011102002149号