题意:
告诉你一开始RAM的容量k。现在有n次运算,每次运算需要占用你a[i]容量的RAM,并且运算完之后会不占用,还会给你的RAM增加b[i]点容量。但每个只能用一次。
问你你的RAM最后最大是多少。
题解:
那么一个显然的贪心,我们肯定是取a最小的先运算,然后拿过来b。
#include<bits/stdc++.h>
using namespace std;
const int N=105;
struct node{
int a,b;
bool operator< (const node& aa)const {
return a<aa.a;
}
}a[N];
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d",&a[i].a);
for(int i=1;i<=n;i++)
scanf("%d",&a[i].b);
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
if(k>=a[i].a)
k+=a[i].b;
printf("%d\n",k);
}
return 0;
}