自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qwesde

勿忘初心

  • 博客(67)
  • 收藏
  • 关注

原创 HDU3718Similarity(KM最大匹配)

题意:就是学生对一类物品的分类。与标准答案之间的相似度。 思路:按题目的公式,对应位置连边。边出现的次数就是权重,计算KM 开始用getchar()读入结果悲剧的TLE 了。然后换成了%S读入,140ms。这是为什么额#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#in

2015-08-31 21:30:46 572 1

原创 HDU3722 Card Game(KM最小费用圈覆盖)

预处理下权重。KM#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#include<vector>#includ

2015-08-31 20:14:43 704

原创 HDU3435A new Graph Game(KM最小费用圈覆盖)

题意:给出一个无向图,问,任意去掉一条边后,剩下的图可以构成环。 求出环的最小值#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include

2015-08-31 19:55:25 424

原创 HDU3488Tour(KM最小费用圈覆盖)

题意:与HDU1853一样的题目#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#include<vector>

2015-08-31 18:57:50 659

原创 HDU1853Cyclic Tour(KM最小费用圈覆盖)

题意:已知城市分为几个不相交的环,每个城市只能属于一个环,一个环最少2个城市,求访问每一个城市一次的最小代价和,代价是城市之间的边。换言之,就是把所有城市访问一遍的最小代价。 解答:以城市之间的路为边,城市为顶点,建立二分图,KM匹配一下#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include

2015-08-31 18:54:19 418

原创 HDU2813One fihgt one(KM匹配)

题意:有几场战斗。怎么安排,使受到的伤害最小 思路:把字符串编码,KM匹配即可#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<

2015-08-31 16:50:59 491

原创 HDU2282Chocolate(KM匹配)

题意:n个盒子,盒子里有巧克力,每次可以把巧克力移动到相邻的位置盒子中,问最小移动的次数,使每个盒子的巧克力最多只有一个。 思路:建图,把需要移动的巧克力和空的盒子之间连边。#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<str

2015-08-31 16:22:12 884

原创 HDU3359 Special Fish (KM匹配)

题意:告诉任意两个鱼之间的关系,然后,两条有关系的鱼的权值异或就是 spawn的值,求所有新的值和的最大值。 思路:预处理好任意两条鱼的spawn的值,KM匹配一下即可。#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<strin

2015-08-31 13:17:01 579

原创 HDU2426 Interesting Housing Problem(KM匹配 )

题意:N个学生安排到M个宿舍,每个学生对宿舍有个评价,正数,0,负数,现在评价是负数的,不能让这个学生去这个房间,问怎么安排让所有的学生都住进宿舍且评价最大。 思路:建立图的权重时,筛选掉负数边。#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#

2015-08-31 12:16:14 583

原创 HDU1533Going Home(KM匹配之最小值匹配)

题意:求最小花费。KM通常是来求最大完美匹配,这里只需要把权重变为负数。最后再变回来即可#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#incl

2015-08-30 20:57:20 989

原创 HDU2225奔小康赚大钱(KM匹配模板题)

题意:略。 入门KM的模板题目,学习链接#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#include<vec

2015-08-30 19:15:39 879

原创 二分图学习小结

二分图的性质:在无向图G中,至少要有两个点。如果存在回路,那么回路必为偶数边的回路。。 匹配: 在图论中,一个匹配是一个边的集合,其中任意两条边都没有公共顶点。 最大匹配: 一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配 最大匹配数:最大匹配的匹配边的数目 完美匹配:如果一个图的某个匹配中,所有的顶点都是匹配点,那么

2015-08-30 10:21:23 1015

原创 HDU1520Anniversary party(入门树形DP)

题意:给出了,参加party的人的关系,但是如果一个人的直接上司出席,那么他就不会出席,每个人有自己的rating。现在想要rating最大。在网上找了半天,也没找到比较好的树形DP讲解,暂时的感觉是利用DFS搜索的时候,回溯更新。 1.dp[u][0]:表示u这个人不去,那么他的手下v可以选择去或者不去。所以 dp[u][0]+=max(dp[v][0],dp[v][1]); 2.dp[i][

2015-08-29 16:12:39 639

原创 HDU3594 Cactus ([好题] 强连通之仙人掌图 )

题意:判断是不是仙人掌图,仙人掌图的定义, 1.首先是强连通的 2.任意一个遍只能属于一个圈。 仙人掌图的分析#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#includ

2015-08-29 09:38:34 1014

原创 HDU3639Hawk-and-Chicken (好题,强连通缩点,建图,DFS回溯)

题意:大家玩老鹰抓小鸡的游戏,但是大家都想做老鹰,所以老师安排一个投票,每个人不能投自己,但是可以投多个人,投票具有传递性,比如A–>B, B–>C,那么B获得A一票,C获得B一票,A一票,共计2票。现在问谁能胜出,并列的也算,输出胜出者的票数,以及升序输出,获胜的编号。 思路:由于大家投票,可能有环,所以需要Tarjan算法把图转换为DAG,然后进行搜索,但是如果缩点后正向建图,搜索时会发现,如

2015-08-28 13:12:11 962 1

原创 HDU3861 (强连通缩点+二分匹配最小路径覆盖)

题意:把城市至少分成几个块,规则有三 1. A能B,B能到A,那么A,B一定要在一起。 2. 一个城市只能属于一个块。 3. 在一个块里的城市,任意2点之间必须有路径。 对于规则1,就是说强连通的必须在一起,所以用Tarjan进行缩点,然后,规则2,3就是求DAG最小路径覆盖。(最小路径覆盖=顶点数-最大匹配)#include<cstdio>#include<iostream>#in

2015-08-27 18:51:55 727

原创 HDU3072 Intelligence System(强连通+最小传递费用+边权)

题意:从某一点出发,经历所有的点,使费用最小,每条边是有费用的。 缩点,建立DAG#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#includ

2015-08-27 17:52:53 466

原创 HDU1827 Summer Holiday(强连通+缩点+最小传递费用)

题意:给出人物关系图,要把一个通知告诉所有人,告诉每一个人有一个费用,现在想知道最小通知的人与费用。 思路:利用Tarjan算法,对原图进行缩点,然后找出入度为0 的点,那么这个人是必须要通知的,由于经过缩点,所以,如果这个点是缩点来的,那就枚举下这个点里的任一个点,找到最小的费用点。#include<cstdio>#include<iostream>#include<algorithm>

2015-08-27 12:11:12 649

原创 HDU3836Equivalent Sets(强连通+加边构成强连通)

题意:至少加几条边构成强连通, 和上一题一样#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#include<ve

2015-08-27 10:22:04 818

原创 HDU2767Proving Equivalences(强连通+缩点+ 至少加几条边让整个图变成强连通))

题意: 至少加几条边让整个图变成强连通。 思路:对于N个点的图,我们知道至少需要N条边才能使这个图强连通,现在我们先对题目的图计算一下强连通,对于已经在一个强连通的点,把他们看做为一个点,然后对新形成的图,计算出度,入度为0的最大值,因为,加一边,可以使入度,出度加一。#include<cstdio>#include<iostream>#include<algorithm>#include

2015-08-27 10:18:45 1538

原创 HDU1269 迷宫城堡 (强连通图判定)

题意:判定给出的有向图是不是强连通图 Tarjan算法模板题目#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#

2015-08-26 19:04:38 1272

原创 HDU4185Oil Skimming(行列匹配||棋盘匹配||黑白染色||1X2矩形覆盖)

题意:找出最多的形如“##”横着竖着都可以,明显的1X2矩形覆盖,直接按坐标和的奇偶来分为二分图。#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>

2015-08-26 10:32:10 1051

原创 HDU4160 Dolls(最大匹配)

简单题#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#include<vector>#include<cstd

2015-08-25 22:40:52 587

原创 HDU 2548Kindergarten (最大独立集 + 建图细节)

把不认识的人建立关系,求最大独立集。#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#include<vector

2015-08-25 22:09:26 716

原创 HDU 1083Courses(最大匹配)

#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#include<vector>#include<cstdlib>

2015-08-25 18:23:00 556

原创 HDU 3605 Escape(多重匹配之多对多的匹配)

题意:N个人要要到M个星球上去,告诉每个人可以去哪些星球,以及每个 星球可以住的人数,问所有的人时候都可以安排完 这题和 HDU1669差不多,HDU1669是一对多的匹配,这是多对多的匹配,一对多的匹配是大家的limit都是一样的,多对多的匹配是大家的limit不都一样,每个人有自己的limit,所以开个数组记录每个人的limit#include<cstdio>#include<iostre

2015-08-25 14:22:06 3845

原创 HDU1669 Jamie's Contact Groups (二分+二分图的多重匹配+一对多的匹配)

多重匹配:一对多的二分图的多重匹配。二分图的多重匹配算法的实现类似于匈牙利算法,对于集合X中的元素xi,找到一个与其相连的元素yi后,检查匈牙利算法的两个条件是否成立,若yi未被匹配,则将xi,yi匹配。否则,如果与yi匹配的元素已经达到上限,那么在所有与yi匹配的元素中选择一个元素,检查是否能找到一条增广路径,如果能,则让出位置,让xi与yi匹配。match[i][j]表示X集合中的Xi点与

2015-08-25 12:35:04 4636

原创 HDU 2819 Swap (行列匹配+输出解)

题意:能否使对角线上全是1 ,这个简单直接按行列匹配,难在路径的输出,我们知道X,Y左右匹配完了之后,不一定是1–1,2–2,3–3……这样的匹配。可能是1–3,2–1,3–2,我们要把他们交换成前一种的匹配形式,也就是路径的答案,再有矩阵的一些关于秩的性质,行变换和列变换是等价的。#include<cstdio>#include<iostream>#include<algorithm>#i

2015-08-24 22:16:59 898

原创 HDU2389 Rain on your Parade(二分图匹配 ,HK算法 )

匈牙利算法果断超时,只有用HC模板测试一下#include#include#include#include#include#include#include#include#include#include#include#include#define lson (rt<<1),L,M#define rson (rt<<1|1),M+1,R#define M ((L

2015-08-24 20:48:40 1238

原创 HDU I'm Telling the Truth (二分图最大匹配+字典序最大路径输出(好题))

关键在于建图,把 每个学生和它的可能的名次之间连上边,然后最大匹配,匹配时逆序进行(保证字典序的最大)#include#include#include#include#include#include#include#include#include#include#include#include#define lson (rt<<1),L,M#define rson (

2015-08-24 20:01:47 861

原创 HDU3118Arbiter (二分图的本质(好题)+二进制枚举)

题意:删除给出的图中的最少的边,让图无奇数边的环 二分图的定义:至少含有2个点,如果有环,环必须是偶数的边。 二分图如果分成两个部分,比如X,Y两部分,我们知道两部分之间是有边相连的,但是同一部分之间的点是没有边相连的。 所以,结合以上的知识,我们枚举,把图的点分为2个部分,只要把同一部分的点之间的边删掉,那么最后剩下的图就是二分图,就是满足题意的图,枚举过程记录最小值#include<cs

2015-08-24 16:21:53 1022

原创 HDU1350 Taxi Cab Scheme (最小路径覆盖)

题意:m个顾客的乘车信息,表示几点上车,要从一个坐标到达另一个坐标,花费的时间是两点的曼哈顿距离,两次换乘至少间隔1分钟(再加上坐标的二者的坐标的距离),求最少的司机数目 思路:建图,以输入的信息为编号,如果时间满足的话,就连边。#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>

2015-08-22 20:23:03 520

原创 HDU 1045 Fire Net(行列匹配变形+缩点建图)

题意:n*n的棋盘上放置房子,同一方同一列不能有两个,除非他们之间被墙隔开,这样的话。 把原始图分别按行和列缩点 建图:横竖分区。先看每一列,同一列相连的空地同时看成一个点,显然这样的区域不能够同时放两个点。这些点作为二分图的X部。同理在对所有的 行用相同的方法缩点,作为Y部。 #include<cstdio>#include<iostream>#include<algorithm>#i

2015-08-22 18:10:30 718

原创 HDU 3360National Treasures(行列匹配+最大匹配)

题意:在一个n*m的图中每个点有宝贝要雇佣警卫来保护,-1是已经有的了,其他的整数,代表这个位置周围至少有的警卫布局,参考题目的图片。#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>

2015-08-22 14:24:24 767

原创 HDU2768Cat vs. Dog(最大独立集)

题意:C只猫。D只狗,V为观众的投票,格式CX,DY支持CX留下,让DY出局。问怎么抉择能最多留下观众,输出最多的观众数 思路:关键还是建图,就是把题目的某种关系建成二分图,这里我们选择人物的对立关系,建立边,对立的人分为二个集合,他们之间连边,#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#incl

2015-08-19 17:44:56 786

原创 HDU 2444 (二分图判定+最大匹配)

题意:略 思路:能否把人分为俩个组,然后求最大匹配#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#include

2015-08-18 21:31:21 517

原创 HDU2119Matrix(最小点集覆盖)

题意: n*m的矩阵由0,1组成,现在每次操作可以选择一行或者一列,把这一行或者一列的1都变成0,问最少操作几次,可以把1去完。 思路:把矩阵按X,Y坐标分为二分图的A,B俩集合,1的点,可以由其的横坐标向纵坐标连边,最后就是求建立的图的最小点集覆盖(因为你选择一个横坐标的话,肯定是想能最多的把这个横坐标对应的所有的纵坐标都选择到,画个图就很清晰了),最小点集覆盖等于最大匹配#include<cs

2015-08-18 21:08:26 633

原创 HDU 2063 过山车( 最大匹配 )

题意:中文 思路:最大匹配#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#include<vector>#in

2015-08-18 20:51:59 659

原创 HDU1845Jimmy’s Assignment(无向图,最大匹配)

题意:就是求最大匹配#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#include<vector>#includ

2015-08-18 20:35:13 1182

原创 HDU1528Card Game Cheater(最大匹配)

题意:给出 Adam和Eva二人的牌,游戏规则是,每个人轮流每次选择出一张牌,牌的数字大的赢,如果,数字一样按牌的花色H>S>D>C决定谁赢。 思路:按照牌的大小关系,建立二分图的A,B两个集合,EVA大于Adam的牌,就连上边。#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>

2015-08-18 20:17:29 933

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除