boj 342

2024-05-26 09:58
文章标签 342 boj

本文主要是介绍boj 342,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description
xiaoming实在太好管闲事了.有一天他去参加一个舞会,这里聚集了一大堆帅哥美女,但是舞会却不是那么顺利,虽然帅哥和美女的人数都是相同的,但并不是每一位帅哥都能找到他的舞伴,原因就是有些女生只愿意接受某些男生的邀请.小明为了舞会的顺利进行,xiaoming只好厚着脸皮去和这些女生搭话,了解到了这些女生就都愿意接受哪些男生的邀请,那么剩下的工作就是要小明给这些帅哥美女们搭搭线,小明只希望能找到舞伴的人尽量多.

Input
多组数据测试 
每行一个偶数n(n<=1000) ,表示参加舞会的人数,其中男生和女生一样多。
接下来n/2行,每一行先是一个正整数m,然后是m个整数a1,a2…..am(ai<=n/2).
其中第i行表示,第i个女生只愿意接受m个男生的邀请,这分别是第a1,a2….am号男生


Output
在xiaoming的努力下,最多能有多少人找到自己的舞伴

Sample Input

8
1 3
2 2 4
1 2
1 2


Sample Output

6


Hint
一种组合方案是:1号女生和3号男生,2号女生和4号男生,3号女生和2号男生,那么只有4号女生和1号男生没有找到舞伴。

Source
Xiaoming@Fourth

思路:

二分图最大匹配,刚学会,理解不是很深入

相关知识:

http://www.cnblogs.com/pony1993/archive/2012/07/25/2607738.html

http://www.matrix67.com/blog/archives/39

http://imlazy.ycool.com/post.1603708.html

代码:

#include<iostream>
using namespace std;
#define N 505
int map[N][N],n1,n2,visit[N],Link[N];
int findroad(int x)
{for(int i=1;i<=n2;i++){if(map[x][i]&&!visit[i]){visit[i] = 1;if(Link[i]==0||findroad(Link[i]))//x到i可到达,且增广路径上不存在重复点{Link[i] = x;return 1;}}}return 0;
}
int main()
{int n,ans;while(~scanf("%d",&n)){memset(map,0,sizeof(map));memset(Link,0,sizeof(Link));ans = 0;n1 = n2 = n/2;for(int i=1;i<=n1;i++){int num,a;scanf("%d",&num);for(int j=0;j<num;j++){scanf("%d",&a);map[i][a] = 1;}}for(int i=1;i<=n1;i++){memset(visit,0,sizeof(visit));if(findroad(i))ans++;}printf("%d\n",2*ans);}
}

 

这篇关于boj 342的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004140

相关文章

ORA-00600: 内部错误代码, 参数: [13011], [161], [239642167], [342], [4396321], [0]处理

job执行plsql存储过程异常终止报错,alert日志如下 查看导出dump文件 Dump file /oracle/app/diag/rdbms/syora/SYORA2/incident/incdir_603756/SYORA2_ora_99344_i603756.trc 发现有个删除触发器相关的表,检查框住的存储过程,发现里面有触发器的禁用启用,没有授权增删改系统表权限导致 但

BOJ 4228 哈哈哈

题目链接~~> 做题感悟:这题一看就知道要用状态压缩,本题和HDU 1429 胜利大逃亡(续)差不多。 解题思路:你可以把宝物压缩为二进制,例如:01001 代表你已经拿过 1 号和 4 号宝物了 0 代表相应的宝物没拿。用同样的方法把拿某个物品的前提条件也映射成二进制。假如你现在遇到 3 号宝物,如果3号宝物的前提条件是拿到 1 号 和 4 号宝物才能拿 3 号,那么前提条件可以用二进制表示

**Leetcode 342. Power of Four

https://leetcode.com/problems/power-of-four/description/ 4的幂肯定是2的幂,然后就是101的二进制编码交替了。。 class Solution {public:bool isPowerOfFour(int num) {return num > 0 && !(num & (num - 1)) && (num & 0x5555555555

boj 11

Description   We are familiar with the game called “Counting 24”. Now it comes a problem that we want to know whether we can figure out the exact answer with given 4 numbers only using +,-,*,/ and (,

boj 343

DescriptionTradia最近去了趟超市,采购了好多好吃的东西,其中花花绿绿的巧克力最是诱人。为了感谢Jim前段时间对自己的帮助,Tradia决定把自己的巧克力分一些给Jim。但是Tradia也爱吃巧克力,她不想把自己全部的巧克力都给Jim,而是把巧克力平均分配,使得给Jim的总量和留给自己的总量之差最小。聪明的你能帮助她吗?Input输入包含多组测试数据。首先第一行输入一个数T(T<=

boj 347

DescriptionTradia对数据结构很感兴趣,她懂得很多有用的数据结构,比如链表、二叉树、图等等。最近她在学习堆的有关知识,并对堆能够在log2N的时间复杂度内返回当前集合的最值感到十分的满意。可是我们都知道,Tradia是一个求知欲很强的学生,她并不满足于得到集合的最值(最大、最小值),同时她还想获得集合当前的第K小数,并且要求每次查询的复杂度要与log2N相当,如果复杂度比log2N

【光学】基于matlab单缝衍射【含Matlab源码 342期】

⛄一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【光学】基于matlab单缝衍射【含Matlab源码 342期】 点击上面蓝色字体,直接付费下载,即可。 获取代码方式2: 付费专栏Matlab物理应用(初级版) 备注: 点击上面蓝色字体付费专栏Matlab物理应用(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab物理应用(初级版),凭支付凭证,私信博

HUAWEI Programming Contest 2024(AtCoder Beginner Contest 342)(A,B,C,D,E,F,G)

看不懂的英文,题意很难理解,这场还是有点难度的。 C需要处理,D是不太明显的dijikstra,E是线段树优化dp,F是个不好想的线段树,主席树应该也能做。 我觉得讲的很好的宝藏up主->B站视频讲解。之后会比较忙,一篇上万字的题解太费时间了,之后的题解可能就没办法大段大段的来讲了,只说重点。 A Yay! 题意: 长度大于等于3的字符串里只有两种字符,其中一种字符只出现了一次,找到

HUAWEI Programming Contest 2024(AtCoder Beginner Contest 342)

D - Square Pair 题目大意 给一长为的数组,问有多少对,两者相乘为非负整数完全平方数 解题思路 一个数除以其能整除的最大的完全平方数,看前面有多少个与其余数相同的数,两者乘积满足条件(已经是完全平方数的部分无用)对于0,特判(与%=0区分开) import java.io.*;import java.math.BigInteger;import java.util.