- 博客(7)
- 资源 (9)
- 收藏
- 关注
原创 利用分治法来求两个排序数组的中位数
有两个数组 ar1[] 和ar2[] 两个数组的长度都为n 求ar1[]和ar2[]的中位数 可以借鉴归并排序的思想 实质上就是将将两个已经排好序的数组 合并成一个数组 的过程只是在这个过程中添加了一个计算从小到大的次序的数 (count ) 当count =n 和n+1时记录下这两个数 然后在这两个数中间取平均值 就可以了 但是这个算法的复杂度是o(n)如果我们想达到log(n)的复杂度的
2015-12-20 20:23:57 5172 1
原创 直接用bfs来求最大流 poj3436
poj3436 求最大流的问题 虚拟出一个源点 和汇点 然后把输入都为0或者2的机器和源点相连接 把输出都为1的机器和汇点相连接 然后根据机器之间的信息把各个机器的输出和输入相链接 这里值得注意的是 每台机器的输入和输出之间也有链接 大小为每台机器每小时的产量#include <iostream>#include <deque>#include <algorithm>#
2015-12-16 22:14:32 552
原创 poj3436
poj3436 求最大流的问题 虚拟出一个源点 和汇点 然后把输入都为0或者2的机器和源点相连接 把输出都为1的机器和汇点相连接 然后根据机器之间的信息把各个机器的输出和输入相链接 这里值得注意的是 每台机器的输入和输出之间也有链接 大小为每台机器每小时的产量#include <iostream>#include <deque>#include <algorithm>#includ
2015-12-16 21:52:14 477
原创 Dinic算法解决最大流问题poj1273
poj1273 经典的网络流例子 这里结网络流使用的是dinic 算法 相比于EdmondsKarp算法 每次bfs一次才可以找到一条增广路径的效率太低了 dinic算法 先使用bfs对图进行分层 分完层后 不断的进行dfs 搜索增广路径 直到图中不可以dfs的栈为空后 再进行重新分分层 然后再不断的进行dfs搜索增广路径 直到bfs不能再到达汇点 返回最大流includ
2015-12-15 16:24:46 545
原创 poj1273
题目很明显是网络流问题 使用Edmonds-Karp算法 每次对图进行bfs寻找增广路径 然后记录这个路径 flow[i][j] 从i到j的流量 capacity[i][j]为从i到j的最大的容量 每次找到增广路径后 将残余流量放在a[m]中 对整个路径上的点进行流量的更新 直到找不到增广路径#include <iostream>#include <queue>using n
2015-12-14 20:40:57 404
原创 面试题 寻找缺失的页码
题目是这样的,给定一本书的打乱的页码 书缺少了一页怎么找出缺少的那个页 (1).最简单的方式是对整个页码进行排序 nlogn 排序 然后进行遍历 看后一个元素与前一个元素的差值 如果不是为1则就找到了缺失的那一页 (2).使用一个bitset数组 (需要一个n长度的空间) 然后对整个数组进行遍历 将数组元素对应的下标置为1 最后查找整个bitset数组中不为1的下标 就找到了缺失的地方
2015-12-13 15:52:51 954
原创 leetcode-Maximal Square
这里本来要申请一个动态的二维数组的 可是没有想出怎么申请一个动态的二维数组 就申请了一个一伟数组当二维数组用了 dp[i][j] 代表以i j为右下角的最大面积的正方形的边长 if(matrix[i][j]==’1’)dp[i][j]=min(dp[i-1][j-1],dp[i-1][j],dp[i][j-1])+1 else dp[i][j]=0; 下面是提交的代码#include <
2015-12-12 10:41:39 351
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人