二分图&2-sat
YYyyCCCcccBb
觉得为时已晚的时候,恰恰是最早的时候。
展开
-
HDU5971 Wrestling Match(二分图染色)
题意: 给出比赛的人的标号, 以及x个好人y个坏人。询问是否能判断他是一个好人或者坏人。 给出的关系是否不存在矛盾,并且没有既是好人又是坏人。思路:训练的时候这题理解错了,一直没过。 补题发现可以是多个连通块,就是说可以分为m堆,只要每个堆里不存在矛盾关系,且每个人都出现过就可以。#include #include #include using namespace std原创 2017-05-02 11:38:25 · 553 阅读 · 0 评论 -
E - Elementary Math 2015-2016 Northwestern European Regional Contest (NWERC 2015)
题意:给出+-*三种运算以及a xxx b两个数字。要求对于每个a.b执行任意一种预算,且结果均不等思路:构造二分图,寻找最大匹配。并且记录匹配的方式。对于每个a-b a*b a+b都构造一个点,连边#include#include#include#include#include #include#include #include using namesp原创 2017-10-09 12:18:55 · 245 阅读 · 0 评论 -
Necklace HDU - 5727 (二分图)
题意: 给出n个yang珠子n个yin珠子。给出抵消的编号询问排成环,最少可以形成个被抵消的yang珠子思路:枚举yang珠子在yin珠子排列的可能。一次求出不抵消的匹配 数,那么抵消的=n-不抵消的#include #include #include #include #include using namespace std;const int maxn=原创 2017-07-25 19:46:28 · 198 阅读 · 0 评论 -
Courses HDU1083 -二分图匹配
题意: p节课程,n个学生。询问是否能找到p个课代表,每个学生只能当一门课的课代表。思路: 匈牙利裸匹配#include#include#include#include#include #includeusing namespace std;const int maxn=15005;int n,m;int pre[maxn];//保存各点的匹配点int vi原创 2017-04-20 10:52:39 · 248 阅读 · 0 评论 -
HDU-3062-Party(2-SAT)
中文题。思路:两种: 一种是kuangbin的两层dfs写法(我竟然wa了之后怀疑bin神板子。。T_T,最后发现自己智障点写错了)。没毛病,可以套。。#include#include#include#include#includeusing namespace std;const int maxn=1000005;struct node{ int v,next原创 2017-07-30 11:16:34 · 258 阅读 · 0 评论 -
HDU-3622 Bomb Game
题意:放炸弹,每组炸弹有两个,必须使用其中一枚。多个炸弹爆破范围不可重叠。询问得分为-最小的爆炸半径。问得分最高思路;2-sat跑图,二分爆炸半径,用2-sat判别是否可以成立。#include#include#include#include#includeusing namespace std;const int maxn=205;const double eps=原创 2017-07-30 09:51:03 · 293 阅读 · 0 评论 -
Treasure Exploration(POJ_2594) -有向图可重复点-最小路径覆盖
题意: 机器人,探索火星,有n个点,m条边, 边 u->v 为有向边,询问最少派多少机器人可以探索n个点思路: 与无向图不同的是: 无向图每个匹配的点只能有一个入度 和一个出度 ,但是 在:1->3 2->3 3->4 3->5 这种情况下,点3 是可以多次经过的,也就是说 3 可以有多个入度出度。在这种情况下,我们只需要将 1->3->4 2->3->5 看成两条原创 2017-04-20 19:35:29 · 319 阅读 · 0 评论 -
hdu 1054 Strategic Game 最小顶点覆盖(二分图最大匹配)
题意:给出多个点和某些点的连线。询问可以通过最少多少个点,看到所有叶子#include#include#include#include#include #includeusing namespace std;const int maxn=1505;int n,m;int pre[maxn];//保存各点的匹配点int vis[maxn];int voc[maxn];原创 2017-04-18 17:02:25 · 281 阅读 · 0 评论 -
poj3020-Antenna Placement-最小点覆盖
题意: 每个雷达可以最多覆盖相邻两个城市* ,询问最少防止几个雷达思路:这种类型在 二分图建图方法这篇文章中有讲。因为只能覆盖2个,而这个2 便是建图的依据,枚举点的位置,是否可以同相邻四点建立边, 之后找出最大匹配。雷达最少的数量,相当于一个点, 就是说用最少的点覆盖所有的城市, 便是一个最小点覆盖的问题:最小点覆盖= 总点数 - 最大匹配。#include#in原创 2017-04-20 12:04:45 · 250 阅读 · 0 评论 -
最大团模板
#include #include #define N 1010 /* 最大团 = 补图G的最大独立集数 ———>最大独立集数 = 补图G'最大团 */ //最大团模板 bool a[N][N];//a为图的邻接表(从1开始) int ans, cnt[N], group[N], n, m, vis[N];//ans表示最大团,cnt[N]表示当前最大团的节点数,g原创 2017-10-03 14:12:54 · 962 阅读 · 0 评论