随笔分类 - 算法
摘要:uva,10286 1 #include <cstdio> 2 #include <algorithm> 3 #include <cmath> 4 #include <iostream> 5 6 using namespace std; 7 8 const double PI=3.141592653
阅读全文
摘要:把一个平面上给出的点都包含进去的最小凸多边形。逆时针输出凸包的各个顶点。 1.Graham扫描法 (O(n*logn)) 旋转扫除的技术: 2.Jarvis march步进法(O(n*h))h为凸包的顶点数 打包的技术 应用:求二维平面最远点对。 uva,109 1 #include <iostre
阅读全文
摘要:[点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。 类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边
阅读全文
摘要:大白话解析模拟退火: 深入理解模拟退火: 模拟退货wiki 模拟退火:求费马点,求线段,求球,求函数值,求tsp旅行商问题。 这样就完美无缺了。。。。。。。哈哈哈哈哈哈哈哈哈😄😄😄😄 poj,1379 记录一个错了8次的题目,在学校的oj上就是re 1 #include<iostream>
阅读全文
摘要:1.目前做了有关最大流的题目:做得比较急所以可能有些东没有理解清楚。 2.无向图双向建边然后临接矩阵实现,临接表超时。但是对于那种边不是很复杂的用临接表建的话会很清楚。 3.很少用到临接表的ek算法,对于边很多的用dinic算法的临接矩阵实现。 4.拆点,如果一个顶点有容量限制,例如逃跑那道题每个口
阅读全文
摘要:图的割点与桥: dfs树的割点程序代码: 原解释里面是错的。 1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 bool adj[10][10]; 7 int visit[10]; 8 int grand[1
阅读全文
摘要:计算几何基础: 计算几何求线段交点 扫除技术提供了对一组几何物体进行排序的方法 动态数据结构 线段端点每遇到一个端点就检查该点是否是相交点 我们简化问题提出两种假设:这在之后证明计算几何的正确性提供了简化 = == = == == = == = = = = == = = == = == = == =
阅读全文
摘要:流: 源点:s 汇点:t 每条边的容量:容量函数:c(u,v) (u,v)存在于边中 其图化模式为联通图,。 G的流是一个实值函数f: V*V->R且满足下列三个性质: 容量限制:对所有的 u,v ,f(u,v)<=c(u,v) 反对称性:对所有的 u,v f(u,v)=-f(v,u) 流守恒性:对
阅读全文
摘要:详解backtracking 搞清楚回溯体,穷举多维度值,维度一定会加一 数值一定很小。搞清楚怎么处理输入输出。 有一定的模版。 uva,112 这种思想和获取方式是我所追求的。 1 #include <iostream> 2 3 using namespace std; 4 5 enum{ 6 L
阅读全文
摘要:最长上升子序列: uva,497 其实是裸的lis题目,只是需要打印输出。一开始以为打印任意最长上升子序列就可以了,之后一直wa,然后才发现是一开始的最长上升子序列,要考虑实际的应用场景。后面那个mark有点像dijkstra和union find还有lca的father。才发现这种思想已经渗透了整
阅读全文
摘要:dp问题:哈哈哈 子集合问题的dp解法:😄 subset sum uva,562 找到离总和1/2最近的硬币总和,dp数组不断逼近,然后减一减,dp的强大啊~~~ 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4
阅读全文
摘要:uva,10684 1 #include <iostream> 2 #include <cstdio> 3 #define maxn 10005 4 using namespace std; 5 6 int main() 7 { 8 int n; 9 int a[maxn]; 10 while(sc
阅读全文
摘要:背包问题: 首先我们考虑暴力法:每种情况试一下看看最小。这样的每层递归要分两次,为O(2^n) 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 using namespace std; 5 #define maxn
阅读全文
摘要:插入排序源码: 1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 void insert_sort(int a[]) 7 { 8 for(int j=1;j<10;j++) 9 { 10 int key=a[
阅读全文
摘要:Merge Merge_sort实现源码: 1 #include <iostream> 2 #include <cstdio> 3 #define inf 1e9 4 using namespace std; 5 6 void merge(int A[],int p,int q,int r) 7 {
阅读全文
摘要:贪婪算法 贪心算法自顶向下,常规递归-》尾递归-》迭代。每次看一个解。 贪心算法的选择: 1.一个全局最优解可以通过局部最优(贪心)来选择达到。 2.我们所做的选择总是当前看起来最佳的的选择,然后再解决选择之后出现的子问题,可能依赖已经作出的选择但是不会依赖还没有做出选择的子问题。 3.证明在每一步
阅读全文
摘要:后缀数组 后缀数组2
阅读全文
摘要:看到一个讲得很好的:二分图的最大匹配,完美匹配,匈牙利算法 还有一个特别详细的:matching uva,10080 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <cstring> 5 #includ
阅读全文
摘要:讲得挺好的:Spanning Tree 强联通图:边为 c=v*(v-1)/2 uva,544 kruskal求最大生成树,然后求数边里面最小的限制。用到了剪枝的方法,把字符串映射成整数,然后跑一遍就过了。 1 #include <iostream> 2 #include <cstdio> 3 #i
阅读全文

浙公网安备 33010602011771号