河南多校联合训练 F 不是匹配

描述

有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 

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?cid=320&cpid=6

*******************************************************

题意:有n个人,m行x,y的信息,表达的是第x个人对第y个活动感兴趣。每个人都要去把自己感兴趣的活动参加完,且每个人参加一个活动需要花费一天的时间,而且当有一个人在参加某活动时,别人不可以同时参加,问你最后每个人都把自己感兴趣的活动参加完时花费的最短天数。

分析:对活动出现次数做标记,有几个人对XX活动感兴趣,则XX活动满足题目要求的天数就为几天,要求所有人都参加完,则所有活动天数最大值就是题目要求的最少天数。

AC代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<math.h>
 4 #include<queue>
 5 #include<algorithm>
 6 #include<time.h>
 7 #include<stack>
 8 using namespace std;
 9 #define N 12000
10 #define INF 0x3f3f3f3f
11
12 int v[N];
13
14 int main()
15 {
16     int T,n,m,x,y,i;
17
18     scanf("%d", &T);
19
20     while(T--)
21     {
22         scanf("%d %d", &n,&m);
23
24         int ans=0;
25         memset(v,0,sizeof(v));
26
27         for(i=0;i<m;i++)
28         {
29             scanf("%d %d", &x,&y);
30             v[y]++;
31
32             ans=max(ans,v[y]);
33         }
34         printf("%d\n", ans);
35     }
36     return 0;
37 }

时间: 2024-08-13 22:50:41

河南多校联合训练 F 不是匹配的相关文章

河南多校联合训练 南阳理工 1261 音痴又音痴的LT

描述 LT最近一直在无限循环薛之谦的歌,简直都中毒了!可是呢…他的歌LT还是不会唱(其实不止他的歌LT不会唱,所有人的歌LT都不会唱…因为LT是标准的音痴)可是LT又很喜欢唱歌(所以LT不仅是音痴还是音痴)…没错,这对于LT的室友来说简直是噩梦… 现在呢,LT有N次操作,每次操作只会有两种可能: I a: 表示着LT使用唱歌软件唱歌得到的分数. Q k: 表示着LT想知道自己得到的第k小的分数是多少.(如果没有第k小,输出-1) 输入 有多组输入(不超过20组),每组输入的第一行是一个N,表示有

HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&#39;s problem(manacher+二分/枚举)

HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分相同,第一部分与第二部分对称. 现在给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度. 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法,求出以第i个点为中心的回文串长度,记录到数组p中 要满足题目所要求的内容,需要使得两个相邻的回文串,共享中间的一部分,也就是说,左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也是一样. 因为我们已经记录下来以

HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&amp;#39;s problem(manacher+二分/枚举)

pid=5371">HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分同样,第一部分与第二部分对称. 如今给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度. 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法.求出以第i个点为中心的回文串长度.记录到数组p中 要满足题目所要求的内容.须要使得两个相邻的回文串,共享中间的一部分,也就是说.左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也

2014多校联合训练第一场(组队训练)

这是我.potaty.lmz第二次训练,毕竟经验不足,加上水平不够,导致我们各种被碾压. A - Couple doubi: 这道题是道比较水的数论.但我们都没想出来要怎么做.后来是potaty提议打个表看看,然后lmz打出表后发现了规律.我还没细看,待研究后再补全. D - Task: 这道题一看就知道是个贪心(现在只要是有deadline的题我都觉得是贪心了).虽然想出来了,但还是不会严格证明为什么只要取满足task的且y最小(y相等时x最小)的machine就行了. 我的做法是把所有mac

2016多校联合训练4 F - Substring 后缀数组

Description ?? is practicing his program skill, and now he is given a string, he has to calculate the total number of its distinct substrings. But ?? thinks that is too easy, he wants to make this problem more interesting. ?? likes a character X very

2015多校联合训练第一场Tricks Device(hdu5294)

题意:给一个无向图,给起点s,终点t,求最少拆掉几条边使得s到不了t,最多拆几条边使得s能到t 思路: 先跑一边最短路,记录最短路中最短的边数,总边数-最短边数就是第二个答案 第一个答案就是在最短路里面求最小割,也就是求最大流,然后根据最短路在建个新图,权为1,跑一边网络流 模板题,以后就用这套模板了 #include <iostream> #include <cstdio> #include <cstring> #include <queue> #incl

2015年多校联合训练第一场OO’s Sequence(hdu5288)

题意:给定一个长度为n的序列,规定f(l,r)是对于l,r范围内的某个数字a[i],都不能找到一个对应的j使得a[i]%a[j]=0,那么l,r内有多少个i,f(l,r)就是几.问所有f(l,r)的总和是多少. 公式中给出的区间,也就是所有存在的区间. 思路:直接枚举每一个数字,对于这个数字,如果这个数字是合法的i,那么向左能扩展的最大长度是多少,向右能扩展的最大长度是多少,那么i为合法的情况就是左长度*右长度(包含i且i是合法的区间总数). 统计左长度可以判断a[i]的约数是否在前面出现过-因

2015年多校联合训练第四场(Olympiad)hdu5327

题意:找区间美丽数(自身有不同数字组成的数,如123是,100不是)的个数 思路:打表 #include <bits/stdc++.h> #define LL long long using namespace std; int a[1001005]; int n; int f[100005]; int sum[100005]; int flag[10]; void init() { for(int i = 1; i <= 100000; i++) { memset(flag,0,siz

HDU OJ 5317 RGCDQ( 2015多校联合训练第3场) 暴力+小技巧

题目连接:戳ME 题意:在一个[L,R]内找到最大的gcd(f[i],f[j])其中L<=i<j<=R,f[x]表示i分解质因数后因子的种类数.eg:f[10]=2(10=2*5),f[12]=2(12=2*2*3). 分析:很容易想到先将f[x]求出来,这里x最大1e6,要在常数时间内求出f[x].并且稍加分析就知道1<=f[x]<=7,可以用一个dp[i][j]表示从f[1]到f[i]有多少个j.这样就可以在常数时间内预处理出来,后面在O(1)的时间内就可以输出结果.并且