转手次数
时间限制:1秒 内存限制:256M
【题目描述】
小H怀揣一些硬币,打算到商店买价值 \(M\) 元的生活物品。在商店买东西,不可避免会出现硬币的转手的情况,即他付出超过 \(M\) 元的硬币,商店老板再找回一些硬币。为提高效率,小H想要转手次数最少,即他付出的硬币数与老板找回的硬币数之和最小。
已知有 \(N\) 种不同的硬币流通,面值分别为 \(v_1,v_2,…,v_N\)(单位:元),小H怀揣的硬币,面值为 \(v_i\) 的有 \(c_i\) 枚,我们假设店主每种面值的硬币都有无限多,并总按最优秀方案找零。
【输入格式】
第一行包含两个整数 \(N\) 与 \(M\),它们的意义如题目描述。
第二行包含 \(N\) 个整数:\(v_1,v_2,…,v_N\),其中 \(v_i\) 表示第 \(i\) 种硬币的面值。
第三行包含 \(N\) 个整数:\(c_1,c_2,…,c_N\),其中 \(c_i\) 表示小H拥有第 \(i\) 种硬币的数量。
【输出格式】
一个整数,表示最优方案的转手次数,如无解则输出-1。
【输入输出样例】
Input
3 70
5 25 50
5 2 1
Output
3
【输入输出样例说明】
小H付出面值 25 元的硬币 1 枚,50 元的硬币 1 枚;商店老板找回 1 枚 5 元的硬币,换手硬币数量为 3。
【数据限制】
对于 \(100\%\) 的数据,\(0≤M≤10000\),\(1≤N≤100\),\(1≤v_i≤120\),\(1≤c_i≤10000\)。
【来源】
Mr.he