CF1475D.Cleaning the Phone
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Polycarp often uses his smartphone. He has already installed n applications on it. Application with number i takes up ai units of memory.
Polycarp wants to free at least m units of memory (by removing some applications).
Of course, some applications are more important to Polycarp than others. He came up with the following scoring system — he assigned an integer bi to each application:
- bi=1 — regular application;
- bi=2 — important application.
According to this rating system, his phone has b1+b2+…+bn convenience points.
Polycarp believes that if he removes applications with numbers i1,i2,…,ik, then he will free ai1+ai2+…+aik units of memory and lose bi1+bi2+…+bik convenience points.
For example, if n=5, m=7, a=[5,3,2,1,4], b=[2,1,1,2,1], then Polycarp can uninstall the following application sets (not all options are listed below):
- applications with numbers 1,4 and 5. In this case, it will free a1+a4+a5=10 units of memory and lose b1+b4+b5=5 convenience points;
- applications with numbers 1 and 3. In this case, it will free a1+a3=7 units of memory and lose b1+b3=3 convenience points.
- applications with numbers 2 and 5. In this case, it will free a2+a5=7 memory units and lose b2+b5=2 convenience points.
Help Polycarp, choose a set of applications, such that if removing them will free at least m units of memory and lose the minimum number of convenience points, or indicate that such a set does not exist.
波利卡普经常使用他的智能手机。他已经在手机上安装了 n 个应用程序。编号为 i 的应用程序占用 ai 单位内存。
波利卡普希望至少释放 m 单位内存(通过卸载一些应用程序)。
当然,某些应用程序对波利卡普而言比其他应用程序更重要。他为此设计了一套评分系统——为每个应用程序赋予一个整数 bi:
- bi=1 —— 普通应用程序;
- bi=2 —— 重要应用程序。
根据该评分系统,他的手机总共有 b1+b2+…+bn 个便利点。
波利卡普认为:若卸载编号为 i1,i2,…,ik 的应用程序,则将释放 ai1+ai2+…+aik 单位内存,并损失 bi1+bi2+…+bik 个便利点。
例如,若 n=5,m=7,a=[5,3,2,1,4],b=[2,1,1,2,1],则波利卡普可卸载如下应用程序集合(以下并未列出全部可行方案):
- 编号为 1,4 和 5 的应用程序。此时将释放 a1+a4+a5=10 单位内存,并损失 b1+b4+b5=5 个便利点;
- 编号为 1 和 3 的应用程序。此时将释放 a1+a3=7 单位内存,并损失 b1+b3=3 个便利点;
- 编号为 2 和 5 的应用程序。此时将释放 a2+a5=7 单位内存,并损失 b2+b5=2 个便利点。
请帮助波利卡普选择一组应用程序,使得卸载它们后能至少释放 m 单位内存,且损失的便利点数最少;若不存在满足条件的应用程序集合,请予以说明。
输入格式
The first line contains one integer t (1≤t≤104) — the number of test cases. Then t test cases follow.
The first line of each test case contains two integers n and m (1≤n≤2⋅105, 1≤m≤109) — the number of applications on Polycarp's phone and the number of memory units to be freed.
The second line of each test case contains n integers a1,a2,…,an (1≤ai≤109) — the number of memory units used by applications.
The third line of each test case contains n integers b1,b2,…,bn (1≤bi≤2) — the convenience points of each application.
It is guaranteed that the sum of n over all test cases does not exceed 2⋅105.
第一行包含一个整数 t(1≤t≤104)—— 测试用例的数量。随后是 t 个测试用例。
每个测试用例的第一行包含两个整数 n 和 m(1≤n≤2⋅105,1≤m≤109)—— 分别表示 Polycarp 手机上应用程序的数量以及需要释放的内存单元数量。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109)—— 表示各应用程序所占用的内存单元数量。
每个测试用例的第三行包含 n 个整数 b1,b2,…,bn(1≤bi≤2)—— 表示各应用程序的便利性分数。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
For each test case, output on a separate line:
- -1, if there is no set of applications, removing which will free at least m units of memory;
- the minimum number of convenience points that Polycarp will lose if such a set exists.
对于每个测试用例,在单独一行中输出:
- −1,如果不存在任何应用程序集合,使得移除该集合后能释放至少 m 个单位的内存;
- 若存在这样的集合,则输出 Polycarp 将损失的便利点数的最小值。
输入输出样例
输入#1
5 5 7 5 3 2 1 4 2 1 1 2 1 1 3 2 1 5 10 2 3 2 3 2 1 2 1 2 1 4 10 5 1 3 4 1 2 1 2 4 5 3 2 1 2 2 1 2 1
输出#1
2 -1 6 4 3
说明/提示
In the first test case, it is optimal to remove applications with numbers 2 and 5, freeing 7 units of memory. b2+b5=2.
In the second test case, by removing the only application, Polycarp will be able to clear only 2 of memory units out of the 3 needed.
In the third test case, it is optimal to remove applications with numbers 1, 2, 3 and 4, freeing 10 units of memory. b1+b2+b3+b4=6.
In the fourth test case, it is optimal to remove applications with numbers 1, 3 and 4, freeing 12 units of memory. b1+b3+b4=4.
In the fifth test case, it is optimal to remove applications with numbers 1 and 2, freeing 5 units of memory. b1+b2=3.
在第一个测试用例中,最优策略是卸载编号为 2 和 5 的应用程序,从而释放 7 个内存单位。b2+b5=2。
在第二个测试用例中,通过卸载唯一的一个应用程序,Polycarp 只能释放 3 个所需内存单位中的 2 个。
在第三个测试用例中,最优策略是卸载编号为 1、2、3 和 4 的应用程序,从而释放 10 个内存单位。b1+b2+b3+b4=6。
在第四个测试用例中,最优策略是卸载编号为 1、3 和 4 的应用程序,从而释放 12 个内存单位。b1+b3+b4=4。
在第五个测试用例中,最优策略是卸载编号为 1 和 2 的应用程序,从而释放 5 个内存单位。b1+b2=3。
输入解题思路,AI测评打分。不知道怎么写?