02 2016 档案

摘要:Bellman Ford算法是用于求出包含负权边的图的单源最短路,当存在负环返回错误信息,否则给出原点到各点的最短路,复杂度为O(nm) 其原理就是利用FIFO队列不断对可能边进行松弛操作,每当新松弛了一条边,将这条边加入队列。 阅读全文
posted @ 2016-02-23 22:39 Krew 阅读(154) 评论(0) 推荐(0)
摘要:迪杰斯拉特(Dijksta)算法用于在O(mlogn)时间内求出给定图的最短路,使用优先队列和邻接表来实现,通过当前最短路来对其他边进行松弛操作。 这里将边封装为一个数据结构(邻接矩阵确实方便,但内存也更大)。 阅读全文
posted @ 2016-02-23 20:41 Krew 阅读(208) 评论(0) 推荐(0)
摘要:题目来源:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51190 解析: 明显的是,各个不重叠的子矩阵切法之间没有相互关联。即:一个子矩阵的切总长最小,当且仅当它在“切一刀”后的所有状态中取最小值。 不难想到这样的状态:设d 阅读全文
posted @ 2016-02-11 10:07 Krew 阅读(105) 评论(0) 推荐(0)
摘要:题目大意: 有一个有V(V include include include include using namespace std; const int maxn=1000+20; int dgr[maxn]; bool a[maxn]; vector pile[maxn]; int dfs(int 阅读全文
posted @ 2016-02-11 10:05 Krew 阅读(153) 评论(0) 推荐(0)
摘要:一维前缀和 这个优化主要是用来在O(1)时间内求出一个序列a中,a[i]+a[i+1]+……+a[j]的和。 具体原理十分简单:用sum[i]表示(a[1]+a[2]+……+a[i]),其中sum[0]=0,则(a[i]+a[i+1]+……+a[j])即等于 sum[j] sum[i 1] 。 二维 阅读全文
posted @ 2016-02-11 10:02 Krew 阅读(258) 评论(0) 推荐(0)
摘要:解析: 很明显暴力算各个F[i]会超时,因为枚举因数是O(sqrt(n))级别的,总复杂度就成了O(nsqrt(n)),对于n include include include include define rep(i,x,y) for (int i=x;i 阅读全文
posted @ 2016-02-11 10:00 Krew 阅读(127) 评论(0) 推荐(0)
摘要:加法原理 :做一件事有n种办法,每种办法有p[i]个方案,总方案为p[1]+p[2]+……p[n] 乘法原理 :做一件事有n个步骤,每个步骤有p[i]个方案,总方案为p[1] p[2]……p[n] 排列 :在n个元素中选择k个(顺序不同为不同方案),有P(n,k)种方案,其中P(n,k)=n!/(n 阅读全文
posted @ 2016-02-10 12:22 Krew 阅读(143) 评论(0) 推荐(0)
摘要:今天看了道AHOI的题,才发现ACM/ICPC之残酷事实: 在动态规划的LCS问题中,子序列是不连续的 就好像我把一个单词读错了3年,在中考才明白真相……我还一直以为是连续的……算了,不知道也说明不熟,还是来复习下吧。 状态:F[i][j]为序列a[1~i]和b[1~j]的LCS 转移方程: F[i 阅读全文
posted @ 2016-02-08 21:44 Krew 阅读(108) 评论(0) 推荐(0)
摘要:inorder_tree(k):打印树根为k的树的中序遍历 Search_tree(k):查找k节点是否存在 minum(k): 查找以k为根的子树最小值 maxnum(k):查找以k为根的子树最大值 post_node(k):查找结点k的后驱结点 pre_node(k):查找结点k的前趋结点 No 阅读全文
posted @ 2016-02-03 23:03 Krew 阅读(184) 评论(0) 推荐(0)