首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【51Nod】1432 - 独木舟(贪心)

【51Nod】1432 - 独木舟(贪心)

作者头像
FishWang
发布2025-08-27 12:06:26
发布2025-08-27 12:06:26
11300
代码可运行
举报
运行总次数:0
代码可运行

题目链接:点击打开链接

1432 独木舟

基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题

收藏

关注

n个人,已知每个人体重。独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?

Input

代码语言:javascript
代码运行次数:0
运行
复制
第一行包含两个正整数n (0<n<=10000)和m (0<m<=2000000000),表示人数和独木舟的承重。
接下来n行,每行一个正整数,表示每个人的体重。体重不超过1000000000,并且每个人的体重不超过m。

Output

代码语言:javascript
代码运行次数:0
运行
复制
一行一个整数表示最少需要的独木舟数。

Input示例

代码语言:javascript
代码运行次数:0
运行
复制
3 6
1
2
3

Output示例

代码语言:javascript
代码运行次数:0
运行
复制
2

重量大的能带走小的就带走,否则就自己走。

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
#include <cstdio>
#include <stack>
#include <queue>
#include <cmath>
#include <vector>
#include <deque>
#include <queue>
#include <cstring>
#include <algorithm>
using namespace std;
#define CLR(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define LL long long
#define PI acos(-1.0)
int main()
{
	LL n,m;
	LL v[10000+11];
	scanf ("%lld %lld",&n,&m);
	for (int i = 0 ; i < n ; i++)
		scanf ("%lld",&v[i]);
	sort(v,v+n);
	int st = 0;
	int endd = n-1;
	int ans = 0;
	while (st <= endd)
	{
		if (v[st] + v[endd] <= m)
		{
			endd--;
			st++;
		}
		else
			endd--;
		ans++;
	}
	printf ("%d\n",ans);
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档