2531. 乘船

单点时限: 2.0 sec

内存限制: 256 MB

春暖花开,实验室集体去长风公园泛舟。

实验室有 n(1<=N<=2000) 个人,每个人重量为 ci. 长风公园的每艘船的载重量为 K, 每次最多乘两人。假设每个人只能坐一次船,那么至少需要多少艘船才能让实验室全体都泛舟一次 ?

输入格式
输入第一行 T (1<=T<=30) 表示测试数据组数。

接下来有 T 组测试数据。

对于每组测试数据。

第一行有两个整数 N,K. N 表示实验室总人数 (3<=N<=2000),K(1<=K<=1000) 表示每艘船的最大载重量

第二行有 n 个整数 ci(1<=ci<=K )

输出格式
对于每组测试数据输出一行,每行只有一个数字,即为最少的泛舟次数。

样例
input
2
10 8
7 1 4 2 5 3 1 5 4 4
3 10
1 3 5
output
5
2

/*
思路:贪心
体重从小到大排好序,重的尽量和轻的一起。
*/
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
	int t;
	cin>>t;
	for(int i = 0; i < t; i++) {
		int n,k;
		cin>>n>>k;
		int w[n];
		for(int j = 0; j < n; j++)
			cin>>w[j];
		sort(w,w+n);
		int ans=0;
		int j=0;
		int z=n-1;
		while(z>=j) {
			if(w[z]+w[j]<=k) {
				z--;
				j++;
			} else {
				z--;
			}
			ans++;
		}
		cout<<ans<<endl;
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值