不是匹配
来源:互联网 发布:小微企业会计软件 编辑:程序博客网 时间:2024/05/17 06:11
不是匹配
时间限制:1000 ms | 内存限制:65535 KB
- 描述
- 有N个人,N个活动, 每个人只会对2个或者3个活动感兴趣,每个活动也只有两个人或者两个活动对它兴趣,每个人参加一个感兴趣的活动需要一天 ,且当天该活动被参加时,其他的人不能参加如果每个人都参加完自己有兴趣的活动,应当怎样安排使得所用总天数时间最短2<= N <=1000, 1<=m<=1000;
- 输入
- 一个数T 表示T 组数据
每组一个N表示人数,编号1 -- N , 一个数 m ,接下来m 行每个两个数
x,y, 表示第 x 个人对第y个活动感兴趣 - 输出
- 每组输出一个整数,表示最少天数
- 样例输入
13 6 1 1 1 2 2 22 3 3 1 3 3
- 样例输出
2
找出谁参加的活动最多,将这个最多的活动数记为max1,再找哪个活动被参加的最多,将这个被参加最多的活动数记为max2,比较两者大小,如果max2>max1 就输出max2;否则再找出没有被参加的活动数记为shu,并输出shu+max1:
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node{int ren,huodong;}a[1010];int t;int n,m;int vis[1010][1010];int jishu[1010];int suan[1010];int b[1010];int main(){scanf("%d",&t);while(t--){memset(jishu,0,sizeof(jishu));memset(suan,0,sizeof(suan));memset(b,0,sizeof(b));scanf("%d%d",&n,&m);for(int i=0; i<=n; i++){for(int j=0; j<=n; j++){vis[i][j] = 0;}}for(int i=1; i<=m; i++){scanf("%d%d",&a[i].ren,&a[i].huodong);b[a[i].ren]=1;if(vis[a[i].ren][a[i].huodong] == 0){jishu[a[i].ren]++;suan[a[i].huodong]++;vis[a[i].ren][a[i].huodong] = 1;}}int max1=0,max2=0,shu=0;for(int i=1; i<=n; i++){if(jishu[i]>max1)max1 = jishu[i];if(suan[i]>max2)max2 = suan[i];}for(int i=1;i<=n;i++){if(b[i]==0)shu++;}if(max1<max2)printf("%d\n",max2);elseprintf("%d\n",max1+shu);}return 0;}//明明知道咋做,,代码实现能力不行啊 ,好半天了。。。
0 0
- 不是匹配
- 不是匹配
- 不是匹配
- 【nyoj 1261 不是匹配 】
- 【NYOJ 1291】不是匹配
- nyoj 1291 不是匹配
- NYOJ 1291 不是匹配
- 【NYOJ1291】不是匹配
- ZZULIOJ-【不是匹配】
- 南理oj 不是匹配
- NYOJ 1291 不是匹配
- nyoj1291不是匹配
- NYOJ 1291 不是匹配 【二分图匹配】
- 【zzuli】-不是匹配(思维)
- nyoj-1291-不是匹配【思维】
- nyoj 不是匹配(思维)
- 【原创】深入理解SFINAE(匹配失败不是错误)
- boost enable_if——SFINAE(匹配失败不是错误)
- 查找各大视频网站真实视频地址方法(乐视优酷土豆腾讯56酷6pptv激动网)
- Android SurfaceView使用详解
- Android EditText密码显示隐藏和全部属性的介绍
- MAC 如何隐藏dock栏上你不想看见的图标
- WCF 几种地址的说明
- 不是匹配
- 模线性方程组
- OC内存管理01--对象的内存管理
- 2016多校10 HDU 5857 Median
- 湖南程序设计真题 一行盒子 (链表模拟)
- C++ primer plus第15-16章笔记
- 【数据库管理】数据库自动维护任务介绍(二)
- 主席树的读书笔记
- 嵌入式linux之高级c语言专题--指针2