P5412 [YNOI2019] 排队 题解

扯谈

快两天没发文章了.

题目

题目传送门

思路

定义四个数组:a,b,c,d

其中:

a数组:具体身高

b数组:性别

c数组:男生

d数组:女生

两个变量:cnt1=0(男生数组指针),cnt2=0(女生数组指针)

为了避免出现其他数据类型的问题,就开局直接:

#include<iostream>
#include<algorithm>
using namespace std;
#define int double 

由于多组数据,所以

int t;
	cin>>t;
	while(t--){
    }

首先输入:

int n;
cin>>n;
int cnt1=0;
int cnt2=0;
for(int i=1;i<=n;i++){
	cin>>b[i];
}
for(int i=1;i<=n;i++){
	cin>>a[i];
	if(b[i]==1){
		c[++cnt1]=a[i];
	}		
    else{
		d[++cnt2]=a[i];
	}		
}

输入中间自动分类!!!

for(int i=1;i<=cnt2;i++){
    cout<<d[i]<<" ";
}
cout<<endl;
for(int i=1;i<=cnt1;i++){
    cout<<c[i]<<" ";
}

这样输出因为题目中说先输出女生(因为女生优先)

恭喜你!WA 20pts

为什么???

忘了排序啊!

排序代码:

sort(c+1,c+cnt1+1);
sort(d+1,d+cnt2+1);

代码

上联:完整代码走一波!

#include<iostream>
#include<algorithm>
using namespace std;
#define int double 
int a[100005];
int b[100005];
int c[100005];
int d[100005];
signed main(){
	int t;
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		int cnt1=0;
		int cnt2=0;
		for(int i=1;i<=n;i++){
			cin>>b[i];
		}
		for(int i=1;i<=n;i++){
			cin>>a[i];
			if(b[i]==1){
				c[++cnt1]=a[i];
			}
			else{
				d[++cnt2]=a[i];
			}
		}
		sort(c+1,c+cnt1+1);
		sort(d+1,d+cnt2+1);
		for(int i=1;i<=cnt2;i++){
			cout<<d[i]<<" ";
		}
		cout<<endl;
		for(int i=1;i<=cnt1;i++){
			cout<<c[i]<<" ";
		}
	}
	return 0;
}

下联:点个关注再走呗

横批:还要点赞!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值