#S1051a. 魔法师
魔法师
魔法师(wizard)
问题描述
小M正在玩一个冒险游戏。游戏中,他是一名魔法师,需要在一片神秘的森林中使用法术击败各种怪物。
击败每个怪物都会给予小M一种法术,但是小M只能同时保持一种法术,如果击败新的怪物会遗忘之前的法术。当然,使用不同的法术击败不同的怪物需要不同的回合数。每次使用法术都需要消耗一定的法力值,小M的总法力值是有限的。
他拥有一个道具,这使得他击败第一个怪物不需要时间和法力值。
现在小M希望以最快的速度击败所有怪物,但是他不知道怎么样操作最快。请你帮帮他。
输入格式
输入共 行。第一行两个整数 和 ,分别表示怪物的数量和小M的法力值。
接下来 行,其中每行 个整数,第 行第 个整数记为 ,表示使用怪物 提供的法术击败怪物 需要的回合数。本题中出现的怪物编号都是从 到 的正整数。
接下来 行,其中每行 个整数,第 行第 个整数记为 ,表示使用怪物 提供的法术击败怪物 需要的法力值。
输出格式
如果无解,输出一行一个整数 。
在有解的情况下,输出共 行。第 行一个整数,表示在小M的法力值允许的情况下击败所有怪物的最短回合数。第 行为 个整数的编号序列,第 个整数表示小M击败的第 个怪物编号(含起点与终点)。如果存在多个最优解,请输出使得该编号序列字典序最小的一条。
注意,“字典序比较”是指“逐点比较”而非“逐字符比较”,如 的字典序小于 。
样例输入
4 18
0 9 8 5
7 0 2 3
6 4 0 8
1 7 1 0
0 8 8 8
4 0 8 6
8 5 0 8
9 3 5 0
样例输出
10
1 4 3 2
样例说明
操作顺序为 1 → 4 → 3 → 2 ,总回合数为 5 + 1 + 4 = 10,法力总花费为 8 + 5 + 5 = 18,是法力不超过上限的最快过程。
值得注意的是,虽然存在更快速的操作顺序 3 → 2 → 4 → 1,总回合数为 4 + 3 + 1 = 8,但是其法力花费为 5 + 6 + 9 = 20,超过了法力上限。
数据范围与约定
对于 的数据,。
对于 的数据,。
对于 的数据,。
对于 的数据,。
对于 的数据,。对任意 ,有 , 和 的值在本题中无意义,输入数据中取值为 。所有的 在数据范围内随机生成, 以一条随机操作序列的总花费为基础,在其附近随机取值。
相关
在下列比赛中: