
题目链接
知识点:排序,模拟
题目大意:
给你t组,每组有n个软件,k个内存量,和n个软件对应的内存,运行对应软件可额外获得的内存量,让你求最终可获得的最大的内存量
解题思路:
1.写一个结构体排序,把内存小的放前面,相等时,把对应附増的内存量大的放前面。
2.最后输出最大的内存量
AC代码:
#includeusing namespace std; struct name{ int a;//每个软件对应的内存 int b;//附増内存 }nc[105];//用数组nc来存储 bool cmp(name a,name b) { if(a.a!=b.a)//软件对应内存不等时 { return a.a b.b;//相等时附増内存大的放前面 } } long long int t,n,k; int main() { cin>>t;//t组数据 while(t--) { cin>>n>>k;//n个软件,原来内存 for(int i=1;i<=n;i++) { cin>>nc[i].a;//每个软件对应的内存 } for(int i=1;i<=n;i++) { cin>>nc[i].b;//附増内存 } sort(nc+1,nc+1+n,cmp);//排序 for(int i=1;i<=n;i++) { if(nc[i].a<=k)//表示此时可以运行此软件 { k+=nc[i].b;//加上对应附增的内存 } else{ break; } } cout< 欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)