P2902 [USACO08MAR]Pearl Pairing G题解

题目:传送门

思路:

由于题目保证存在答案,所以对于每颗珍珠一定存在与其相配对的一颗颜色不同的珍珠,所以易得单种颜色的珍珠数量必定小于等于珍珠总数的一半,将珍珠按颜色存入数组中后配对输出即可。(详见代码)

代码:

#include <bits/stdc++.h>
  using namespace std;
int n,c,a[100005],s[100005],i,j,t;
int main()
{
	scanf("%d%d",&n,&c);//输入珍珠总数 n 和颜色数 c 
	for (i=1;i<=c;i++)
	{
		scanf("%d",&a[i]);//输入每种颜色的珍珠数量 a[i] 
		for (j=1;j<=a[i];j++)
		{
			s[++t]=i;//将 a[i] 颗颜色为 i 的珍珠依次放入数组中 
		}
	}
	for (i=1;i<=n/2;i++)
	{
		printf("%d %d\n",s[i],s[i+n/2]);//对珍珠进行配对并输出 
	}
	return 0;
}

这是蒟蒻的第一篇题解上一篇被打回了,求管理员大大通过!qwq

posted @ 2022-03-23 20:33  Jason142  阅读(44)  评论(0编辑  收藏  举报