AT_agc072_e.[AGC072E] Flights 2
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
日本有 N 个机场,每个机场编号为 1,2,…,N。AtCoder 航空公司在日本运营着 M 条航线,每条航线编号为 1,2,…,M。航线 j 从机场 Aj 出发,抵达机场 Bj,票价为 Cj×F 日元。
乘坐 AtCoder 航空公司的飞机可以获得一种名为“里程(マイル)”的货币。初始时你拥有 0 里程。每乘坐一次航线 j,你可以获得 Cj 里程。此外,在机场 i,每 1 里程可以兑换 Ri 日元。由于有约束 0≤Ri≤F−1,所以无法通过不断换乘飞机来无限制地获得金钱。
需要注意的是,兑换的里程数和所持金可以不是整数,但不能为负数。
现在,想要通过飞机从机场 1 到达机场 N,你最少需要准备多少日元的初始资金?
请你解答 TESTCASES 个测试用例。
输入格式
输入通过标准输入给出,格式如下,其中 casek 表示第 k 个测试用例。
TESTCASES
case1
case2
⋮
caseTESTCASES
每个测试用例格式如下:
N M F
A1 B1 C1
A2 B2 C2
⋮
AM BM CM
R1 R2 ⋯ RN
输出格式
请输出 TESTCASES 行。第 k 行输出第 k 个测试用例中,为了能够通过飞机从机场 1 到达机场 N,所需的最小初始资金。
当你的答案与标准答案的绝对误差或相对误差不超过 10−6 时,视为正确。
输入输出样例
输入#1
1 3 2 10 1 2 7 2 3 9 2 2 2
输出#1
146
输入#2
1 4 4 10 1 2 7 2 4 9 2 3 1 3 2 1 2 2 9 2
输出#2
106
输入#3
1 7 8 100 3 2 81 3 4 42 1 6 97 4 5 42 4 1 59 6 3 34 5 3 68 2 7 47 0 58 37 10 89 16 0
输出#3
16354.2758620689655172413793103448275862068965
说明/提示
约束条件
- 1≤TESTCASES≤40000
- 2≤N≤400
- 1≤M≤N×(N−1)
- 1≤F≤100
- 1≤Aj≤N
- 1≤Bj≤N
- Aj=Bj
- (A1,B1),(A2,B2),…,(AM,BM) 均互不相同
- 1≤Cj≤100
- 0≤Ri≤F−1
- 存在从机场 1 到机场 N 的路径
- 所有测试用例的 N2 之和不超过 160000
- 所有输入均为整数
样例解释 1
如果初始资金为 146 日元,可以按如下方式从机场 1 到达机场 3:
- 乘坐航线 1,从机场 1 到机场 2。所持金变为 146−70=76 日元,获得 7 里程。
- 在机场 2,将 7 里程兑换为 14 日元。所持金变为 76+14=90 日元。
- 乘坐航线 2,从机场 2 到机场 3。所持金变为 90−90=0 日元,获得 9 里程。
如果初始资金少于 146 日元,则无法从机场 1 到达机场 3。
样例解释 2
如果初始资金为 106 日元,可以按如下方式从机场 1 到达机场 4:
- 乘坐航线 1,从机场 1 到机场 2。所持金变为 106−70=36 日元,获得 7 里程。
- 乘坐航线 3,从机场 2 到机场 3。所持金变为 36−10=26 日元,获得 1 里程。
- 在机场 3,将 8 里程兑换为 72 日元。所持金变为 26+72=98 日元。
- 乘坐航线 4,从机场 3 到机场 2。所持金变为 98−10=88 日元,获得 1 里程。
- 在机场 2,将 1 里程兑换为 2 日元。所持金变为 88+2=90 日元。
- 乘坐航线 2,从机场 2 到机场 4。所持金变为 90−90=0 日元,获得 9 里程。
如果初始资金少于 106 日元,则无法从机场 1 到达机场 4。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?