自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FlushHip

现在的自己不开心也不难过,只为寻求心灵上的一丝成就感。

  • 博客(25)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 POJ1459

Problem : Power Network Description : 有一个电网,一些基地可以生产电力,一些基地要消耗电力,而基地与基地之间有电线,这些电线有最大的电流量限制。问你这个电网最多消耗多少电力。 Solution : 最大流。在把超级源点向可以生产电力的基地连边,把超级汇点向消耗电力的基地两边。最后跑一边最大流就可以了。 Code(C++) : #include <stdio

2016-07-29 14:33:00 405

原创 DINIC算法

DINIC原理 DINIC算法和EK算法原理其实是一样的,都是寻找增广路,但是在实现的细节上不同,首先,用bfs对顶点进行层次编号,当汇点不在层次图中的时候算法结束;其次,用dfs寻找增广路,在dfs中,用一个顶点扩展时,其实计算了多条增广路,这也是这个算法比EK算法快的原因。Code#include <stdio.h>#include <string.h>#include <io

2016-07-28 10:36:15 1149

原创 EK算法

EK原理EK算法是求网络流最大流的算法。也称为寻找增广路算法,每次寻找一条增广路,求出这条路上最小的容量(木板原理),然后累加起来,直到最后找不到一条增广路为止。注意,在找到最小容量的时候,前向边要减去最小容量,而后向边要加上最小容量。这是为了形成能改正之前寻找增广路错误的残余网络,实际上这就是把之前的容量退回去,形成新的可行路径。Code#include <stdio.h>#include <

2016-07-28 09:39:30 1261

原创 HDU5727

Problem : Necklace Source : 2016 Multi-University Training Contest 1 Description : 有一串项链,有2*N颗珠子,珠子有阴阳之分,各一半,同种类型的珠子不能项链,但是现在又有一些规则:有些阳珠子和阴珠子在一起就会使得阳珠子变暗,问你最少会有多少颗阳珠子变暗。 Solution : 全排列枚举+二分图最大匹配。讲道理

2016-07-27 16:36:25 598

原创 HDU5723

Problem : Abandoned country Source : 2016 Multi-University Training Contest 1 Description : 给你一个图。让你求出最小生成树,且给你的边没有一条是相同的;然后又让你求出这个生成树上的任意两点之间距离的期望。 Solution : kruskal+dfskruskal+dfs,第一问很好求,但是数据比较大,

2016-07-27 09:05:24 537

原创 POJ1548

Problem : Robots Description : 一些机器人清理矩阵中的垃圾,机器人只能往下走和往右走。现在所有的机器人一开始都在左上角。现在问你最少需要多少个机器人才能清理所有的垃圾。 Solution : 二分图的最小路径覆盖。构图就不多说了,但是要注意的是我们连边的时候要往下和右这两个方向连,遇到第一个垃圾就停止连边了。两个垃圾有可能在矩形的对角上,这两个垃圾是可以连边的,这一

2016-07-26 11:28:34 493

原创 POJ2594

Problem : Treasure Exploration Description : 机器人探索宝藏,有N个点,M条边。问你要几个机器人才能遍历所有的点。 Solution : 二分图的最小路径覆盖。这个题看来好像就是裸的最小路径覆盖,但是题中说了一个点可以遍历多次,这和最小路径覆盖中路径之间不能有交点是矛盾的。那么怎么办呢,我们跑一遍floydfloyd算法,来求出它的传递闭包,这样就可以

2016-07-26 11:15:21 416

原创 POJ3216

Problem : Repairing Company Description : 有一些维修工人,有一些需要维修的业务,一个维修工人可以维修多个业务,但是不能超过该业务要求维修工人的到达时间,维修本身需要一些时间,现在给你一张图,表示点到点的距离,如果距离出现-1表示这两点不能直达。问你最少需要多少个维修工人才能完成所有的业务。 Solution : Floyd+二分图的最小路径覆盖。和 PO

2016-07-26 10:22:39 441

原创 POJ1422

Problem : Air Raid Description : 有一些城镇,现在这些城镇之间有一些街道可以连接两个城镇,现在有一些伞兵要游览城镇,且不能有两个伞兵游览同一个城镇。现在问你至少需要多少个伞兵才能游览所有的城镇。 Solution : 看题意就能知道是二分图的最小路径覆盖。很裸。 Code(C++) : #include <stdio.h>#include <string.h>

2016-07-26 10:10:24 409

原创 POJ2060

Problem : Taxi Cab Scheme Description : 出租车接客,每个订单都有出行时间,出发地址,目的地址。一辆出租车在保证乘客能在规定的出发时间之前出发,那么这辆出租车就能接下多单。现在问你最少要多少台出租车才能完成所有的订单。 Solution : 二分图的最小路径覆盖。这是我的第一道最小路径覆盖。主要是学习了建图和最小路径覆盖的基本思想和意义,我分别讲下建图和最小

2016-07-26 10:02:25 544

原创 POJ2724

Problem : Purifying Machine Description : 有一些奶酪,对应着一些二进制编码,现在有一种机器,它有一个开关,也对应了二进制编码,但是里面可能出现’*‘,这个代表者’0‘、’1‘。对应着两种二进制编码。现在给你一些二进制编码,问你要最少用几种二进制编码能覆盖到所有给你的二进制编码。样例输出的是2,这两种二进制编码分别是“0X1”,“10X”。 Solutio

2016-07-24 15:15:12 464

原创 POJ3020

Problem : Antenna Placement Description : 题意没看懂,但是!看图看懂了,如图所示,每两个相邻的点可以用一个圆片覆盖,没有相邻的点,那么这个点也可以用一个圆片覆盖,现在问你至少需要多少个圆片才能覆盖所有的点。 Solution : 二分图的最小边覆盖,还是那句老话,如果想用二分图做,那么就一点要找到对应的边、点、联系,这题一一对应下来,就是要用最少的边来覆

2016-07-24 14:42:15 386

原创 POJ1466

Problem : Girls and Boys Description : 有N个人,这些人中有些人之间有暧昧关系,现在要选出这样的一群人,他们两两之间都没有暧昧关系。 Solution : 二分图的最大独立集。很典型的题目,无需转化,看代码。、 Code(C++) :#include <stdio.h>#include <string.h>#include <iostream>#inc

2016-07-24 11:33:02 412

原创 POJ3692

Problem : Kindergarten Description : 一群男孩子和女孩子,男孩子之间相互了解,女孩子之间也相互了解,有一些男孩子和女孩子之间也相互了解,现在要搞一个活动,要你选出一群人,这个人之间都要相互了解,问你这群人的最大数目是多少。 Solution : 二分图的最大独立集。最大独立集的概念是找到一个这样的点集,使得点集中的任意两点都没有边,且这个点集中的点最多!我们现

2016-07-24 10:56:21 834

原创 POJ2226

Problem : Muddy Fields Description : 给你一个矩阵,中间有些格子中有水。现在给你一些宽度为1,长度不限的板子来盖在有水的格子上,注意,没有水的格子不能用板子盖,但是有水的格子上可以盖多块板子。问你至少需要多少块板子才能使得所有有水的格子都被覆盖。 Solution : 最小点覆盖,这个题有点类似POJ3041,但是要注意不同点,就是上面加粗的文字。因此,这个题

2016-07-23 14:59:10 405

原创 POJ1325

Problem : Machine Schedule Description : 有A和B两种类型的机器,现在有一些工作,它可以在A和B中的任何一种机器中工作,然而,机器的开启是需要代价的,因此A中的第0个机器和B中的第0个机器一开始就是开着的,现在问你至少需要开启多少台机器才能使得所有的工作都被完成。 Solution : 二分图的最小点覆盖,点就是AB中的机器,而边就是一个工作在AB机器中的

2016-07-23 14:38:08 483

原创 POJ3041

Problem : Asteroids Description : 有一个矩阵,里面有一些 ’X‘,现在有一种炮弹,它能打一整行或一整列的目标,现在问你只要要多少枚炮弹才能打掉所有的’X‘。 Solution : 二分图的最小点覆盖。这个题目一开始可能看不出是最小点覆盖,但是我们考虑一下,如果我们向每一行发射炮弹,那么是不是能够把所有的目标都打掉,但是现在我们要最优化地向某几行某几列发射炮弹使

2016-07-23 14:25:49 641

原创 POJ2584

Problem: T-Shirt Gumbo Description: 一群运动员他们对自己T恤的尺码有一个范围的要求。现在给出5种尺码的衣服的数量,问每个运动员是否都能选到自己满意的尺码的衣服。 Solution: 这个题一看就是二分图的多重匹配,但是我一开始是不知道的,于是我就用了二分图的最大匹配来做,我们不要看种类,直接看每一件衣服,这样就转化成了每个运动员都能选到衣服。 Code(最大

2016-07-12 18:00:53 536

原创 POJ1201

Problem: Intervals Description: 给你N个区间,每个区间都有一个C,C表示区间中至少要有C个数字,现在问你至少要多少个数字才能满足所有的区间条件。 Solution_1: 差分约束系统。先看这个问题,如果这些区间都不重叠的话,那么这个问题就很简单。但是并不是这样的,对于区间和问题我们总喜欢表示成这样的形式T[b]−T[a−1]>=CT[b]-T[a-1]>=C。题中

2016-07-12 00:13:05 679

原创 POJ1364

Problem: King Description: 国王给出了一些序列和的不等式。现在问你这些不等式是不是都成立。 Solution: 这个题的描述就很郁闷,下标根本没有表达清楚。实际上就是求数列的某一段和。我们设T(n)=S1+S2+……+SnT(n)=S_1+S_2+……+S_n, 那么这中间一段[a,b][a,b]的和就可以表示成T[b]−T[a−1]T[b]-T[a-1]。这样就转化成

2016-07-10 15:28:13 552

原创 POJ2446

Problem: Chessboard Description: 拿一张1∗21*2规格的卡片来覆盖一个矩阵,这个举证上面有些洞,这些洞是不能覆盖的,现在问你这项任务能不能完成。 Solution: 一看这个问题我一开始想用bfsbfs。但是这个题目是归到了二分图的最大匹配里面,然后仔细一想就知道了,我们可以通过这个卡片来体现匹配的意思,一张卡片要覆盖两个格子嘛,现在所有的格子都要被覆盖,那么也

2016-07-09 15:52:06 505

原创 POJ2536

Problem: Gopher II Description: 一群地鼠到一些洞去避难。给出地鼠和洞的坐标,如果地鼠在规定的时间没有赶到这些洞,那么该地鼠就死了。而且一个洞只能容纳一个地鼠,现在问你这群地鼠最少要死几只。 Solution: 二分图的最大匹配。建好图就是了,很基本的建图。不多说了。 Code(C++): #include <iostream>#include <vector>

2016-07-09 14:52:08 366

原创 POJ2239

Problem: Selecting Courses Description: 一个学生选课,他可以选择很多课,并且每个课有可能有不同的上课时间,但是如果他选了很多课,那么就要保证这些课的上课时间不能冲突。现在问你在保证这些条件的情况的条件下,这个学生最多能选多少节课。 Solution: 二分图的最大匹配,把课程看成一个点集,把上课时间映射成一个点集。这样就变成了经典的二分图的最大匹配了,匈牙

2016-07-09 14:25:24 383

原创 POJ1274

Problem: The Perfect Stall Description: 给奶牛挤牛奶,一个挤奶工只能给一头奶牛挤奶,一头奶牛也只能由一位挤奶工挤奶,现在,给出挤奶工能挤奶的牛的情况,问你最多有几头奶牛能成功挤奶。 Solution: 二分图的最大匹配。很经典的题目,用来练习匈牙利算法。 Code(C++): #include <iostream>#include <vector>#

2016-07-09 13:59:49 399

原创 POJ1276

Problem: Cash Machine Description: 给你一个总的金额,然后有N种账单,每种账单又有m张,要你选出账单使得金额不超过总的金额,但是又最接近总金额。 Solution: 多重背包+二进制优化。 Code(C++): #include <stdio.h>#include <string.h>#define MAX(a,b) ((a)>(b)? (a):(b))co

2016-07-08 17:40:25 383

蘑菇街2016研发工程师在线编程题 - 题解

蘑菇街2016研发工程师在线编程题 - 题解 个人的解答,不喜勿碰.

2017-10-03

2017CSUFT第十届ACM程序设计大赛

题目、题解、数据、代码都有

2017-05-21

gdb官方使用手册

2016-12-01

凸包做题模板

POJ上做的一个凸包的题,可作为凸包的模板。

2016-03-19

CSUFT_ACM日常上课安排

提供我们协会日常上课安排

2016-03-19

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

TA关注的人

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