[codeforces 1358B] Maria Breaks the Self-isolation 叫上所有伙伴 (自小到大排序+逆序处理)

Codeforces Round #645 (Div. 2)  参与排名人数14819

[codeforces 1358B]    Maria Breaks the Self-isolation  叫上所有伙伴 (自小到大排序+逆序处理)

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

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

ProblemLangVerdictTimeMemory
B - Maria Breaks the Self-isolation GNU C++17Accepted62 ms800 KB

题目看得磕磕碰碰,又是纸又是笔,对着样例写写画画,才弄明白

样例模拟如下

5
1 1 2 2 1
自小到大排序1 1 1 2 2
位置        1 2 3 4 5 
数值        1 1 1 2 2
叫上所有伙伴逆序处理
位置5对应数值2,此时场地中有1+4=5>=2,1(召集人)+4(扣除位置5,剩下4人)可行,
故最终场地中有5+1(召集人)=6人

6
2 3 4 5 6 7
自小到大排序2 3 4 5 6 7
位置        1 2 3 4 5 6
数值        2 3 4 5 6 7
叫上所有伙伴逆序处理
位置6对应数值7,此时场地中有1+5=6<7,1(召集人)+5(扣除位置6,剩下5人)不可行,
位置5对应数值6,此时场地中有1+4=5<6,1(召集人)+4(扣除位置5,6,剩下4人)不可行,
位置4对应数值5,此时场地中有1+3=4<5,1(召集人)+3(扣除位置4,5,6,剩下3人)不可行,
位置3对应数值4,此时场地中有1+2=3<4,1(召集人)+3(扣除位置3,4,5,6,剩下2人)不可行,
位置2对应数值3,此时场地中有1+1=2<3,1(召集人)+3(扣除位置2,3,4,5,6,剩下1人)不可行,
位置1对应数值2,此时场地中有1+0=1<3,1(召集人)+0(扣除位置1,2,3,4,5,6,剩下0人)不可行,
故最终场地中有1(召集人)=1人


6
1 5 4 5 1 9
自小到大排序1 1 4 5 5 9
位置        1 2 3 4 5 6
数值        1 1 4 5 5 9
叫上所有伙伴逆序处理
位置6对应数值9,此时场地中有1+5=6<9,1(召集人)+5(扣除位置6,剩下5人)不可行,
位置5对应数值5,此时场地中有1+4=5>=5,1(召集人)+4(扣除位置5,6,剩下4人)可行,
故最终场地中有5+1(召集人)=6人


5
1 2 3 5 6
自小到大排序1 2 3 5 6
位置        1 2 3 4 5
数值        1 2 3 5 6
叫上所有伙伴逆序处理
位置5对应数值6,此时场地中有1+4=5<6,1(召集人)+4(扣除位置5,剩下4人)不可行,
位置4对应数值5,此时场地中有1+3=4<5,1(召集人)+3(扣除位置4,5,剩下3人)不可行,
位置3对应数值3,此时场地中有1+2=3>=5,1(召集人)+2(扣除位置3,4,5,剩下2人)可行,
故最终场地中有3+1(召集人)=4人

AC代码如下

#include <cstdio>
#include <algorithm>
using namespace std;
int a[200010];
int main(){
	int t,n,i;
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		for(i=1;i<=n;i++)scanf("%d",&a[i]);
		sort(a+1,a+1+n);//自小到大排序
		for(i=n;i>=1;i--)//逆序处理
			if(i+1>a[i])break;
		printf("%d\n",i+1);
	}
	return 0;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值