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