D14:Download More RAM(翻译+题解)

原题:Problem - A - Codeforces

翻译:

描述:你知道你可以下载更多的内存吗?现在有一家有n种不同的软件来增加你的内存的商店。第二个内存增加软件需要a[i] GB的内存来运行(暂时,程序运行完毕,就可以拿回内存),并给你额外的b[i] GB的内存(永久)。每个软件只能使用一次。目前,你的电脑有kGB的内存;

注意,如果一个增加内存的软件使用的内存比你现有的多,你就不能使用它;

既然内存是世界上最重要的东西,你会想知道,最大可能达到的内存量是多少;

输入:第一行包含一个范围为[1,100]的整数t,代表测试用例的数量;

测试用例的描述如下:第一行包含整数n和k (1≤n≤100,1≤k≤1000);

后两行,每一行包含描述数组a和b的n个整数(1≤a[i],b[i]≤1000);

输出:对于每个测试用例,输出一个整数代表你能达到的最大内存量,每个用例输出占一行;

注释:第一个测试用例中,最初只能运行第三个软件,但是这样会把内存增加到20 GB,这使得你可以使用第一个软件,然后你的内存会增加到29GB。而剩下的唯一一个软件需要30 GB的内存,所以就此停下了;

第二个测试案例中,你可以使用第一个、第二个、第四个和第五个软件,每个软件只需要1 GB的内存来运行,这会使你的内存增加到5 GB,然后使用最后一个剩余的软件把内存增加到6 GB;

第三个测试案例中,所有的软件都需要超过1GB的内存才能运行,所以你的内存量为1 GB。

代码:简单排序题

#include<iostream>
#include<algorithm>
using namespace std;
struct ram{
	int a;
	int b;
}r[105];
bool cmp(ram x,ram y){
	if(x.a==y.a) return x.b>y.b;
	return x.a<y.a;
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--){
		int n,k,i;
		scanf("%d%d",&n,&k);
		for(i=0;i<n;i++) cin>>r[i].a;
		for(i=0;i<n;i++) cin>>r[i].b;
		sort(r,r+n,cmp);
		for(i=0;i<n;i++){
			if(k>=r[i].a)
				k+=r[i].b;
			else break;
		}
		printf("%d\n",k);
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的文文文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值