#643(Div.2)B. Young Explorers 题解

在这里插入图片描述
题目要求:分组,成员的e值必须小于本组人数,求最大小组数。

解题思路:贪心,在限制条件下利益最大化。为保证小组数量最大,按e = 1可自成一族的成员分到多人组就是浪费的思路,依据e从小到大分组。

AC代码:

#include <bits/stdc++.h>
using namespace std;

int main(){
	long long t,n;
	scanf("%lld",&t);
	
	while(t--)
	{
		scanf("%lld",&n);
		vector<int>e(n+1,0);//实现简单的“动态数组”
		for(int j=1;j<n+1;j++)
		{
			scanf("%d",&e[j]);
		}
		sort(e.begin()+1,e.end());//对e排序
		int ans = 0,cnt = 0;//ans组数,cnt组员数
		for(int k=1;k<n+1;k++)//分组
		{
			cnt++;
			if(cnt >= e[k])//如果该成员e值小于组员数,则分组成功,ans+1,cnt置零。否则继续录入下一个组员进入本小组
			{
				ans++;
				cnt=0;
			}
		}
		printf("%d\n",ans);
	}
}

个人收获:

  1. 当循环内语句包含循环判定变量时,多使用for语句,这样对该变量的变化及范围了解得更加清晰。

  2. #include <bits/stdc++.h>
     using namespace std;
    

    万能头文件真的香,用起来省时方便。

  3. scanf("%lld",&n);
    vector<int>e(n+1,0);
    

    sacnf函数和vector容器一起用可以实现根据输入n来定义相应长度n的数组,感觉有点像动态数组,但比动态数组方便很多。
    vector容器真的很好用较为全面的vector应用指南

(我的代码逐渐C++化)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《数学杰作:探险家的后续编年史》是一本介绍数学领域中伟大作品的书籍。本书由多位数学家和探险家合作编写,旨在向读者呈现数学领域中一些重要的发现和突破。 这本书的内容囊括了数学领域中许多重要的数学定理和研究成果。从欧几里得几何学到微积分,从代数到数论,从概率论到统计学,本书全面地展示了数学的广泛应用和深远影响。 书中详细介绍了一些著名数学家的生平、主要发现和贡献。读者可以了解到他们在数学领域的研究思路和方法,以及他们所面临的困难和挑战。这些故事不仅使读者更深入地了解数学的发展历程,还激发了对数学的兴趣和探索的欲望。 此外,本书还介绍了一些数学在实际应用中的重要作用。例如,数学在天文学中的应用帮助科学家研究宇宙的形态和运动规律;数学在密码学中的应用保护着我们的隐私;数学在金融领域中的应用帮助我们更好地理解经济的变化等等。这些实际应用的例子向读者展示了数学的实用性和价值。 《数学杰作:探险家的后续编年史》是一本既富有深度又有趣味性的数学读物。它不仅适合对数学有浓厚兴趣的专业数学家和学生阅读,也适合一般读者了解数学领域的发展和应用。阅读这本书,我们可以更好地理解数学的美妙、智慧和力量,对数学有更深入的认识和理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值