摘要:
题意:有m个锁着的猪圈,现在有n个顾客过来买猪,他们手里分别有对应猪圈的钥匙,如果已经开了对应的猪圈,就可以在把这个猪圈的猪赶到其他猪圈去,要求能卖出最多的猪数。要点:这题建图比较困难,建完图就是个最大流模板。另设一个源和一个汇,将顾客作为其他节点,将猪圈开启的次数作... 阅读全文
摘要:
最小费用最大流就是在原来求最大流的基础上,假设每条边还有一个单位流量所需要的费用,因为最小费用的出现,原本的平行边变得有意义,并且允许反向增广,基本上就是将原本BFS改为进行一次BellmanFord算法寻找最短路径,只要初始流是该流量下的最小费用可行流,每次增广后的... 阅读全文
摘要:
最大流一般可以解决像货运这种问题,例如POJ1273,一共n个池塘m条边,给出每条边能通过的最大水流量,给出一个起点和一个汇点,问起点流出的最大水流量是多少。基本算法是Edmonds-Karp算法:循环增加流的值,每次通过BFS寻找一个增长路径(从起点到汇点的简单路径... 阅读全文
摘要:
题意:x轴下部是陆地,上部是海洋,现在海洋中有一些岛屿,要求在陆地上建一些半径为d的雷达,使所有岛屿都能被扫描到,求最少建几个雷达。要点:基本思路是:雷达当然是建在x轴上可以扫描到最大的范围,所以从每个岛屿的坐标作半径为d的圆,可以在x轴上截取一个区间,按照这些区间的... 阅读全文
摘要:
题意:m个人每人n张牌,每张牌的点数都不同,每轮每个人出一张牌,求最少能赢几轮的最大值。要点:很简单的贪心思想,因为问最少能赢几轮,所以假定自己出牌如果不是当前最大值,一定用人出比自己大的牌,这样只要将牌面从大到小排序,从大的开始出牌,与总共的牌进行比较,看有几张牌大... 阅读全文
摘要:
题意:经典的过河问题,一群人要过河,只有一艘船,船最多坐两个人,船速为两人中较慢的那个,问把所有人都运到对岸最少要多长时间。要点:这题自己想真挺难,看了一下网上的方法,基本上是这样,当人数n=1,2,3时,最小时间是固定的,而n大于3时,可以先考虑把最慢的两个人运过去... 阅读全文
摘要:
假设有n个活动,每个活动有一个起始时间和一个结束时间,现在想在一段固定时间内安排最多的活动数。这个问题是典型的贪心问题,我们把所有的活动按结束时间从小到大排序,这样可以知道最小的那个活动a1一定在最优集合里,因为假设最优结构中没有a1,而是它的最小活动为另一个数假设a... 阅读全文
摘要:
最优二叉搜索树,又称霍夫曼树,是一种使查找时间尽可能小的算法。已知一个节点的出现概率以及它的深度,它的总查找时间就是深度*概率,现在希望经过排列使所有节点的查找时间最小。基本思路是区间dp,两个边界中间任选一个根节点,拆分成两个子树。下面是算法导论上关于一个期望搜索的... 阅读全文
摘要:
题意:一群奶牛分别有s和f两个值,要求选出一些奶牛使s与f的和最大并且s和f分别的和不能为负数。要点:用dp[i]=j表示当s的和为i时f的和为j,这样最后只要求dp[i]+i的最大值即可。注意这题因为有负数,所以引入一个偏移量。这里01背包是用一维表示的,所以要根据... 阅读全文
摘要:
题意:算法导论上的一道习题,给出一系列点的的坐标,现在从最左端出发,到达最右端的点,再返回原点,要求遍历所有点并且路程最短。要点:出发又返回可以看成两个人同时从左往右走,其中一个人走的快一个人走的慢。重点是因为一个点只能走一次,所以可以想出最优子结构,假设现在用dp[... 阅读全文