题目大意略
这个题主要方法就是用结构体存储 a a a 和 b b b ,按 a a a 从小到大排序,然后用循环将 a i {a}_i ai 依次与 k k k 比较,若 $k \ge {a}_i $ 则增加 $ {b}_i $ ,若 k < a i k < {a}_i k<ai 则退出循环。
小提示:这里如果自己写 cmp
函数时,如果用 sort
则等于时不能返回 true
否则会卡RE 建议如果要等于时返回 true
用 stable_sort
。
完整代码如下:
//A. Download More RAM
#include<iostream>
#include<algorithm>
using namespace std;
struct ram
{
int a,b;
}r[101];
bool cmp(ram a,ram b)
{
if(a.a <= b.a)
{
return true;
}
return false;
}
int main()
{
long t,n,k,i,j;
cin >> t;
while(t--)
{
cin >> n >> k;
for(i = 0;i<n;i++)
{
cin >> r[i].a;
}
for(i = 0;i<n;i++)
{
cin >> r[i].b;
}
stable_sort(r,r+n,cmp);
j=k;
for(i = 0;i<n;i++)
{
if(r[i].a <= j)
{
j += r[i].b;
}
else{
break;
}
}
cout << j << endl;
}
return 0;
}