二分图
eIectron
优美的代码是成功AC的第一步。看着那么多博客不再更新,这就是我几年后的状态吗?要是走了就再也不回来了。
展开
-
POJ1274 — 二分图匹配模板题
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22876 Accepted: 10190 Description Farmer John completed his new barn just last week, comp原创 2016-07-23 16:41:01 · 870 阅读 · 0 评论 -
CodeFroces NWERC 2015 E.Elementary Math(二分图)
题意:给出n对数字,可以在n对数字中间用+,-,*三种运算,要保证最后得到的答案不能有相同的。 解法:考虑到n只有2500,数据量比较小,最多只会有7500种结果,所以可以构造二分图。左边是n个点代表n对数字,右边?个点,代表结果。左边n个数字都向着右边他所能得到的答案连一条边。 如果有两对数字运算结果相同,那么他们同时连到这个点上面。 看看最后最大匹配是否等于n就知道可不可行了。 复杂度原创 2017-10-14 09:59:37 · 239 阅读 · 0 评论 -
POJ 3057 Evacuation(一道很好可以加强对二分图理解的题目)
这是挑战上面的一道题。 一开始我按照自己思路,先跑一遍bfs,得到每个人到门的距离,然后每分钟都建立一次二分图,跑一遍二分图,用总人数减去跑出来得到的结果,直到0才停止。 但是,这样的做法是错误的。我自己拿了网上别人AC的代码然后自己造数据发现,下面这一组数据我跑出来的有问题 6 6 XDXXXX D....D X.X..X X.XX.X X...XX XXXDXX 答案应该是原创 2017-08-04 09:46:35 · 266 阅读 · 0 评论 -
LOJ 「SDOI2017」新生舞会(二分 + 分数规划+ 费用流)
点击打开链接 看到这题,首先看到,一对一,那么感觉是二分图?看了看数据,挺像的。 然后看到,原来是要一个C值最大。很典型的分数规划。我们转移一下就可以得到(a_1 - b_1 * c) + (a_2 - b_2 * c) + (a_3 - b_3 * c) + (a_4 - b_4 * c)....... = 0 所以我们只要去枚举c,然后不断让上式向着零趋近,最后输出即可。 当然,我原创 2017-08-01 19:37:07 · 500 阅读 · 0 评论 -
HDU 5093 Battle ships(二分图)
很经典的二分图匹配问题。 对于这个问题,我们只需要遍历两遍图,来建立一个二分图。原则为,如果这里有个#,说明这一行要拆成两行,这一列要拆成两列。 代码如下: #include using namespace std; const int MAXN = 55; int uN, vN; int n, m; //u,v数目 char graph[MAXN][MAXN]; int row[MAXN原创 2017-07-31 09:15:39 · 230 阅读 · 1 评论 -
HDU 5943 Kingdom of Obsession(二分图)
http://acm.hdu.edu.cn/showproblem.php?pid=5943 题意:你有n个数字,他们分别从s+1到s+n,将他们打乱,问是否可以整除1到n。 解法:很明显,如果s+1到s+n有两个素数则无解。但是如果慢慢去求这个区间是否有两个素数也很费时间。百度一下发现,五亿以内最大的素数间隔好像是280多,那么两个素数就是600多吧。。。也就是n大于600就会有两个素数,如原创 2017-07-21 15:02:42 · 172 阅读 · 0 评论 -
POJ 3692 Kindergarten(二分图)
http://poj.org/problem?id=3692 在网上找二分图模板题找到了这道,由于不会二分图一直想不懂,后来发现,二分图肯定是分成两部分,每部分自身不能相连,但是这道题男同学之间全部互相连接表示熟悉,这是不对的,所以我们转换为补图,这时候跑一跑二分图匹配发现,算到一个最大互不相识的组合,就是最多能有几对人不互相熟悉,那么我们要让剩下的人相识,那么就是全部人的人数减去这个最大互不相原创 2017-05-02 17:24:05 · 242 阅读 · 0 评论 -
POJ 1469 COURSES(二分图匹配模板题)
http://poj.org/problem?id=1469 题意:给出p个科目n个同学,问是否存在一种方案,使得每个科目都有一个科代表,这个科代表不可以同时兼任多个科目。科代表只能在该科目的同学中选。 代码如下: #include #include #include #include #include #include #include #include #include using na原创 2017-05-02 18:06:36 · 339 阅读 · 0 评论 -
POJ 2446 Chessboard(二分图-网格图构图)
http://poj.org/problem?id=2446 这道题,十分的妙啊。我一开始死活想不出到底怎么做,这竟然是二分图???我往这方面想也没有结果。后来在网上看到了二分图常用的建图技巧,我看到了网格图的建图方法。方法就是染色。就按照样例来说 大概就是这样,然后跑一遍最大匹配即可原创 2017-05-02 17:43:11 · 506 阅读 · 0 评论 -
HDU 3829 Cat VS Dog (反建法求最大独立集)
反建法求最大独立集一直都是二分图的一大套路。 这题目分析的时候,有种选了C1就不能选D1这种感觉,于是把cat和dog放在两边,看是否可以构成二分图求解。但是仔细想想这题目,求的是最多的开心人数,用cat和dog建图并不能说明什么。于是我们想其他方法。我们要的是人数,那么干脆用小孩来建二分图。怎么构造好呢?其实到这里突然很直观的发现,小孩之间的关系?其实就是如果小孩1喜欢C1不喜欢D1,小孩2喜原创 2017-10-25 09:59:20 · 286 阅读 · 0 评论