CF2189B.The Curse of the Frog
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
在一条无限的数轴上,青蛙起始于 0 号点。经过多年的冥想修炼,青蛙掌握了 n 种独特的魔法跳跃方式。第 i 种跳跃方式可以让它向前跳不超过 ai 个单位。换句话说,如果它当前在整数点 k,那么跳跃后可以落在从 k 到 k+ai 的任意一个整数点上。
但魔法总是要付出代价的;青蛙被施加了诅咒。在每次第 bi 次尝试(即第 bi 次、第 2bi 次、第 3bi 次等)使用第 i 种跳跃方式之前,它会被迫后退 ci 个单位!也就是说,若它在点 k,则会先到达 k−ci,之后才能跳到 k−ci 到 k−ci+ai 间的任意整数点。
青蛙的目标是通过跳跃最小化遭遇回退的次数,最终到达 x 号点。请你帮助青蛙 —— 求出它到达目标点至少需要经历多少次回退,若无法到达 x 点,则输出 −1。
输入格式
每组测试数据包含多个测试用例。第一行包含测试用例个数 t(1≤t≤104)。每组测试用例描述如下:
每个测试用例的第一行包含 2 个整数 n 和 x(1≤n≤105,1≤x≤1018)——青蛙可用跳跃类型数量及目标点位置。
接下来的 n 行,每行描述一种跳跃方式,第 i 行包含 3 个整数 ai、bi 和 ci(1≤ai,bi,ci≤106)。
保证所有测试用例的 n 之和不超过 105。
输出格式
对于每个测试用例,若青蛙可以到达 x 点,输出最少需要经历的回退次数;若无法到达,则输出 −1。
输入输出样例
输入#1
6 1 1 3 3 3 1 7 4 2 5 2 4 1 2 3 2 2 4 5 8 12 1 11 10 1 4 1 1 3 1 2 5 2 1 7 1 1000000000000000000 1000000 4 654321 1 10 2 2 1
输出#1
0 1 -1 2 298892990032 3
说明/提示
在第一个测试用例中,青蛙可以向前跳 1 个单位,最终到达 1 点。因此答案为 0。
在第三个测试用例中,可以证明青蛙无法到达 4 点。
在第四个测试用例中,青蛙可以按以下方式到达 8 点:首先用第 1 种跳跃方式跳 12,再用第 4 种跳跃方式跳 1,再用第 2 种跳跃方式跳 10。位置变化为 0→(回退)−11→1→2→(回退)−2→8。
在第六个测试用例中,青蛙可以按以下方式到达 10 点:跳 6 次 2 单位,再跳 1 次 1 单位。位置变化为 0→2→(回退)1→3→5→(回退)4→6→8→(回退)7→9→10。