湖南科技大学校赛 问题 H: ACM实验室招新啦!! 水题

问题 H: ACM实验室招新啦!!

时间限制: 1 Sec   内存限制: 128 MB
提交: 210   解决: 56
[ 提交][ 状态][ 讨论版]

题目描述

http://125.221.232.253/JudgeOnline/problem.php?cid=1046&pid=7

  湖南科技大学的ACM实验室自2011年以来,逐渐步入正规,但现在实验室的ACMer全部都来自计算机学院,这给我们的发展带来瓶颈,因此我们决定面向全校招募一些精通算法、数学和英语的人才。
  算法可以细分为穷举、递推、搜索、动态规划等;数学可以细分为数论、组合数学等;英语细分为词汇量和快速阅读能力等。这里为了简化问题,我们把这些细分的能力都称为算法能力,并记作1、2、3……m。
  通过我们的广泛宣传,全校同学积极响应,特别是本部各非计算机学院和潇湘学院的同学也积极报名,这让我们非常高兴,也让我们充满了无限遐想:省赛不算什么,未来目标直指ACM亚洲区预选赛,ACM全球总决赛。当然,比赛只是证明能力的一种方式,我们真正的目的在于和全国的ACMer广泛交流,不断提升自己的能力。杭电OJ每天数以万计的程序提交说明什么,ACM圈子太火爆了。
  现在有很多同学都想加入我们成为一个真正的ACMer,他们对于算法各有所长。但实验室名额有限,我们决定从第一批报名的同学中先选择3位同学组建一个ACM团队,要求这个团队精通所有的算法,这样团队的综合能力就比较全面。如果团队内的任两位同学精通同一种算法,这也是我们希望的,这使团队的交流合作会更加顺畅,因此我们也希望这种情况越多越好。

现在有一大堆同学的申请摆在我们面前,你能帮助我们找到这样一个团队吗?

输入

本题有多组数据。
每组数据的第一行有两个整数N, M  (1 <= N,M <= 100)分别代表申请的同学总数和算法总数。
接下来的N行,每行第一个都是整数C(1 <= C <= 100) 代表这位同学精通C种算法,接着这一行会有C个整数,代表这位同学所精通的算法(算法用一个数字表示)。

输出

每组数据输出一行。
如果能组建一个团队,请按从小到大的顺序依次输出所招同学的序号。如果团队组建有多种方案,则优先选择先申请的同学(即序号小的同学)。如样例1,有135和145两种方案可供选择,则取135这种方案为最终方案.
如果不能按要求组建团队,只要输出大写的"NO"

样例输入

6 7
3 1 4 7
2 1 4
3 4 5 7
3 3 5 6
4 2 3 6 7
2 2 7
5 8
3 2 4 7
2 3 4
3 4 5 7
3 3 5 6
5 2 3 6 7 8

样例输出

1 3 5
NO

提示


不解释 看题意 

注意 当2个队伍都符合要求 都能解决各种题目的话     要优先选取重复多的

#include<stdio.h>
#include<string.h>

struct haha
{
	int pos;
	int num;
	int vis[105];
}a[105];
int flag,maxnum;
int main()
{
	int n,m,i,j,k,p,ai,aj,ak;
	while(scanf("%d %d",&n,&m)!=EOF)
	{
		maxnum=0;
		for(i=1;i<=n;i++)
		{
			memset(a[i].vis,0,sizeof(a[i].vis));
			scanf("%d",&k);
			a[i].num=k;
			a[i].pos=i;
			int q;
			for(j=1;j<=k;j++)
			{
				scanf("%d",&q);
				a[i].vis[q]=1;
			}
		}
		flag=1;
		for(i=1;i<=n;i++)
		{
			for(j=i+1;j<=n;j++)
			{
				for(k=j+1;k<=n;k++)
				{
					int mid=a[i].num+a[j].num+a[k].num;
					if(mid>=m&&mid>maxnum)
					{
                    
                         for(p=1;p<=m;p++)
							 if(a[i].vis[p]||a[j].vis[p]||a[k].vis[p]) continue;
							 else break;
					     if(p==m+1) 
						 {
							 flag=0;
								 maxnum=mid;
								 ai=i;
								 aj=j;
								 ak=k;
						 }
					}
				}
			}
		}
		if(flag==0)  printf("%d %d %d\n",ai,aj,ak);
		else printf("NO\n");
	}
	return 0;
}






你可能感兴趣的:(湖南科技大学校赛 问题 H: ACM实验室招新啦!! 水题)