不是匹配
时间限制:1000 ms | 内存限制:65535 KB
难度:2
-
描述
-
有N个人,N个活动, 每个人只会对2个或者3个活动感兴趣,每个活动也只有两个人或者两个活动对它兴趣,每个人参加一个感兴趣的活动需要一天 ,且当天该活动被参加时,其他的人不能参加如果每个人都参加完自己有兴趣的活动,应当怎样安排使得所用总天数时间最短2<= N <=1000, 1<=m<=1000;
-
输入
- 一个数T 表示T 组数据
每组一个N表示人数,编号1 -- N , 一个数 m ,接下来m 行每个两个数
x,y, 表示第 x 个人对第y个活动感兴趣
输出 - 每组输出一个整数,表示最少天数 样例输入
-
1 3 6 1 1 1 2 2 2 2 3 3 1 3 3
样例输出 -
2
这道题应该是签到题,考思维的,然而看着别人不停地ac,本渣渣却想了半天,敲了半天,一直wa.....智商啊!!
01.#include<cstdio>02.#include<cstring>03.#include<algorithm>04.usingnamespacestd;05.inta[1103];//每个同学喜欢的活动个数06.intb[1103];//该活动被多少人喜欢07.boolcmp(intx,inty)08.{09.returnx>y;10.}11.intmain()12.{13.intn,m,x,y;14.intt;15.scanf("%d",&t);16.while(t--)17.{18.memset(a,0,sizeof(a));19.memset(b,0,sizeof(b));20.scanf("%d%d",&n,&m);21.while(m--)22.{23.scanf("%d%d",&x,&y);24.a[x]++;25.b[y]++;26.}27.sort(a,a+1103,cmp);28.sort(b,b+1103,cmp);29.intans=max(a[0],b[0]);30.printf("%d\n",ans);31.}32.return0;33.}
- 一个数T 表示T 组数据

本文探讨了一个活动匹配问题,其中N个人分别对2或3个活动感兴趣,而每个活动也只有2个人感兴趣。目标是最小化所有人完成其感兴趣的活动所需的总天数。通过分析,给出了一种算法实现方式,即首先统计每个人的兴趣数量及各活动的关注者数量,再按降序排序后取最大值作为所需最少天数。
474

被折叠的 条评论
为什么被折叠?



