算法学习
文章平均质量分 67
start0609
欲速不达、跬步千里
展开
-
LAC(least common Ancestor)算法
LAC 算法的定义: 对于树 T 的两个节点 u v满足最近公共祖先的 LAC(T,u,v) 存在一顶点 x 满足 x 是 u 和 v 的公共 祖先 ,且 x 的在树中深度最大。LAC 的算法思想是:并查集 + dfs 详细过程代码:(给出详细的注解)#include #include using namespace std; const int原创 2012-07-09 20:10:57 · 2354 阅读 · 0 评论 -
POJ 状态DP+ 01 背包问题
题目大意: n 个货物 用两辆汽车运走 货车的 容量 为 c1 c2 问 至少需要多少次才能运完。本人菜鸟:开始思路是看的网上的基本代码如下基本思路:/* * 状态 DP + 01背包 * 题目大意:给定n个物品和两辆车的最大运载量,每次两辆车都要同时开动,问最少开几次能把所有物品运走,1 * 解题思路:好题,解法为状态压缩DP+背包,我的状态压缩DP做的特别少,所有原创 2012-09-07 15:22:55 · 669 阅读 · 0 评论 -
HDU 4252
http://acm.hdu.edu.cn/showproblem.php?pid=4252开始想得比较复杂,暴力搜索过了(离散化)import java.util.Scanner;public class CityBuild{ int n; int a[]; boolean flage[]; int ans = 0; public void solve(){ Scanne原创 2012-09-04 18:59:48 · 1535 阅读 · 0 评论 -
HDU DP 问题集合
HDU上的46道DP题状态转移方程,供以后系统学习DP用网上转载 作为 DP 专题练习题备用1.Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程转载 2012-08-01 10:14:58 · 1635 阅读 · 0 评论 -
HDU 1028 动态规划
http://acm.hdu.edu.cn/showproblem.php?pid=1028"Well, it seems the first problem is too easy. I will let you know how foolish you are later." feng5166 says."The second problem is, given an positi原创 2012-07-31 20:56:51 · 559 阅读 · 0 评论 -
HDU 1003 求最大子段和的动态规划
http://acm.hdu.edu.cn/showproblem.php?pid=1003算法基本思路:/* * 此题是动态规划找到 a[1……n] 中 最大的字段和 * 令 b[j] 为 在 子段中 k->j 是最大值 k∈ (1,j) * 那么 状态转移方程 为 b[j] = max{ b[j-1]+a[j] , a[j]}; */import原创 2012-07-31 21:01:47 · 757 阅读 · 0 评论 -
HDU 1051 贪心算法
http://acm.hdu.edu.cn/showproblem.php?pid=1051题目大意:给n根木棍的长度和重量。根据要求求出制作木棍的最短时间。建立第一个木棍需要1分钟,若是接着要制作的木棍重量和长度都比此木棍长就不需要建立的时间,若是没有,则再需要建立时间。求时间最小为多少。解题思路:对木棍的长度和重量进行排序,以长度为首要考虑。排序完后的不一定都是下一根木原创 2012-07-31 20:48:31 · 508 阅读 · 0 评论 -
HDU 1024动态规划问题
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1024题意 求 M 段 不相交 的 字段的和的最大值 。经典的动态规划用 fk][j] 表示 选择 了 K 段 在 1到 j 内选择的最大值状态转移方程为: f[k][j] = max{ f[k][j-1]+a[j] , max( f[k-1][t] + a[j] ) }i原创 2012-07-30 15:41:49 · 490 阅读 · 0 评论 -
HDU 1022 堆栈的应用
题目大意:堆栈的应用,较简单不说,贴出java 代码如下注意:我刚开始提交的时候一直是 WA 不知道为什么,一直找不到原因, 算法思想一点都没错,改成 C++ 能 AC 在C++ 中用 while(cin>>X>>Y) 或者 c 用 scanf() != "EOF" 来判断是否到达 文件的末尾 ,而我一开始用 sc,nextInt() != -1 来判断, 不能通过原创 2012-07-30 15:36:41 · 481 阅读 · 0 评论 -
最大匹配 PKU 2536
http://poj.org/problem?id=2536问题描述及分析:该题较简单,题意是给出m个动物的地点,n个洞,还有速度和时间(其实就是给了距离),问m个动物最多能有几个在规定的时间里一规定的速度躲到洞里逃生。典型的二分图匹配的问题,动物的位置为左边的结点,洞为右边的结点,如果他们的距离小于等于时间×速度,我们就认为他们是连接的,否则认为不连接,我们只要计算最大二分图匹配原创 2012-07-25 22:08:24 · 636 阅读 · 0 评论 -
Floyd-算法的最短路径保存问题
Floyd 算法思想和编写代码都比较简单,不重复,只是我在理解 Floyd 如何保存找到的各个点之间的最短路劲时候理解了较久时间,做个笔记。Floyd 算法模板如下:void floyd(int n, int **map, int **dis ){// n 为节点个数, **map 为 路径矩阵, dis[i][j] 表示为从 节点 i 到 节点 j 的最短距离 // 初始化 dis原创 2012-07-24 11:42:24 · 5986 阅读 · 2 评论 -
HDU 2642 二维树状数组问题
简单:Starshttp://acm.hdu.edu.cn/showproblem.php?pid=2642题目大概意思: 在某个位置可以是 B (明亮的星星) 或者是 D (昏暗的星星) 当 Q x1 x2 y1 y2 时候 求 在 x1 y1 到 x2 y2 中一共有多上个星星。思路:用二维树状数组进行模拟 其算法的效率为 log(n) java 代码如下:im原创 2012-08-06 15:00:16 · 538 阅读 · 0 评论 -
最大网络流PKU1273
题目:大意是 john 想抱住他最爱的三叶草不被水淹没,他要用渠道对水进行引流(引到河流中去),水源为 1 ,河流汇点为 n 为 ,问渠道最多能引流多少水本题的注意点:1:存在重边如:1->2 = 3 1->2 = 4; 1->2 = 5;那么 map[1][2] =3+4+5;开始提交错误了好多次,主要是对于存在重边 没多加思索,定原创 2012-07-16 09:18:34 · 643 阅读 · 0 评论 -
KMP算法:字符串匹配
KMP算法基本思想: 我们在用常规的思想做 字符串匹配时候是 如 对如 字符如果 T = abab 用P = ba 去匹配,常规思路是 看 T 第一个元素 a 是否 和P 的一个 b 匹配 ,匹配的话 查看各自的第二个元素,不匹配 则将 T 串的 第二个元素开始 和 P 的第一个匹配,如此 一步一步 的后移 来进行逐个匹配 这样效率不是很高,对于 KMP 算法,其根本就是对 匹配模式串 P 进原创 2012-07-09 20:31:06 · 464 阅读 · 0 评论 -
有向连通分量的Tarjan算法
参考博客:比较详细。http://www.byvoid.com/blog/scc-tarjan/算法伪代码描述:Tarjan(root)1、初始化 def , low[], map[][] 2、stack3、 对 与 root 相连的每个 节点 p 如果 p 在 stack 中 那么 low[root] = min(low[root], def[p]);并且 call原创 2012-07-09 19:53:44 · 519 阅读 · 0 评论 -
最短路径的相关问题
最短路径问题1:单源最短路径单源路径的定义:带权值的有向图 G=(V , E) 加权函数 w: E->R 路径 p = {v0 ,v1,v2,vk) 的权值:定义从 u 到 v 的最短路径:Bellman-ford算法BellMan_Ford算法能表面图中是否存在一个从源点出发可达到的权值为负数的回路。松弛技术:在松弛一条边 (u, v),进行测试是原创 2012-07-09 20:37:36 · 839 阅读 · 0 评论 -
以前做过的几道常用DP 问题集合(以备以后记忆)
动态规划(石子并归问题)题意:有 n 个石子,把n 堆石子合并成一个,合并时候只能是相邻的两个石子,合并时能获得积分为合并两队石子的数目之和,问如何合并能或得最多或者最小的积分:例如:4 个石子输入:4 4 5 9 (为每一堆的石子个数,如果想让1 2 堆合并则得到积分 8)输出 43 54解题思路:令f[i:j] 表示把第i 堆原创 2012-09-07 15:34:00 · 3045 阅读 · 0 评论