[codeforces 1355B] Young Explorers 题意难懂

Codeforces Round #643 (Div. 2)  参与排名人数11475

[codeforces 1355B]   Young Explorers   题意难懂

总目录详见https://blog.csdn.net/mrcrack/article/details/103564004

在线测评地址https://codeforces.com/contest/1355/problem/B

ProblemLangVerdictTimeMemory
B - Young Explorers GNU C++17Accepted77 ms4400 KB

一遍,两遍,三遍,都看不懂题意,无奈切换到C题,看懂了C题,也模拟成功了样例,感觉C题一时半会,编不出,继续切换到D题,比较粗略的弄懂了D题题意,无心在D题进行编写,看了看此时B题的通过情况,我的天,5000多了,看来要跟B题死磕,大不了,交代在B题。

题意最难懂的一句Russell decided that an explorer with inexperience e can only join the group of e

or more people.


什么意思呢,连蒙带猜,结合样例,才略微的有了些想法

3
1 1 1

可进行如下分组
情况1:{1},{1},{1}
情况2:{1,1},{1}
情况3:{1,1,1}
情况4:{1},{1},另一个待在营地
情况5:{1,1},另一个待在营地
情况6:{1},另2个待在营地
情况7:另3个待在营地
5
2 3 1 2 2

可进行如下分组
情况1:{1},{2,2},2,3待在营地
情况2:{1},{2,2,2},3待在营地
情况3:{1,2,3},{2,2}
情况4:{1,2},{2,2},3待在营地
情况5:{1,2},{2,2,3}
......
少于2个分组的情况就不再枚举了。

明白题意后,为了尽可能多的分组,思路如下:

inexperience是1的每分1组,每组中最少的元素只有1个(可包含inexperience是1的元素);

inexperience是2的每分1组,每组中最少的元素只有2个(可包含inexperience是1,2的元素),多出的进入之后的分组;

inexperience是3的每分1组,每组中最少的元素只有3个(可包含inexperience是1,2,3的元素),多出的进入之后的分组;

inexperience是4的每分1组,每组最少的元素只有4个(可包含inexperience是1,2,3,4的元素),多出的进入之后的分组;

......

第一发WA后,才发现inexperience是2,多出的;inexperience是3,多出的;inexperience是4,多出的,是一个累加关系,可以累加后,进入下一轮分组,编码时没注意到。

AC代码如下

#include <stdio.h>
#define maxn 200010
int cnt[maxn];
int main(){
	int t,n,i,a,tot,remain;
	scanf("%d",&t);
	while(t--){
		tot=0,remain=0;//remain统计inexperience中多出的部分
		scanf("%d",&n);
		for(i=1;i<=n;i++)cnt[i]=0;
		for(i=1;i<=n;i++)scanf("%d",&a),cnt[a]++;//cnt[i]记录inexperience是i的数量
		for(i=1;i<=n;i++)
			tot+=(cnt[i]+remain)/i,remain=cnt[i]+remain-(cnt[i]+remain)/i*i;//注意i是指1个分组中最小的元素数量
		printf("%d\n",tot);
	}
	return 0;
}

类似题目

洛谷 P1089 津津的储蓄计划

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值