一点一点学算法
文章平均质量分 66
「已注销」
我的目标 离我还有多远我的梦想 有点遥不可及我要用十倍苦心做最突出一个我不能退缩 不管路多艰难 我都要努力我要靠自己的双手去做自己喜欢做的事我要靠自己的努力去我想去的地方旅游我还年轻 我还可以去奋斗
展开
-
一步一步写算法(之hash表)
hash表,有时候也被称为散列表。个人认为,hash表是介于链表和二叉树之间的一种中间结构。链表使用十分方便,但是数据查找十分麻烦;二叉树中的数据严格有序,但是这是以多一个指针作为代价的结果。hash表既满足了数据的查找方便,同时不占用太多的内容空间,使用也十分方便。 打个比方来说,所有的数据就好像许许多多的书本。如果这些书本是一本一本堆起来的,就好像链表或者线性表一样,整个数据会显得非原创 2013-04-22 13:16:03 · 790 阅读 · 0 评论 -
一步一步学算法之hash表
哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。实际上,这只需要几条机器指令。 对哈希表的使用者一一人来说,这是一瞬间的事。哈希表运算得非常快,在计算机程序中,如果需要在一秒种内查找上千条记录通常使用哈希表(例如拼写检查器)哈希表的速度明显比树快,树原创 2013-04-22 16:40:31 · 1259 阅读 · 0 评论 -
最长公共子串长度
问题描述我们称序列Z = 是序列X = 的子序列当且仅当存在严格上升的序列,使得对j = 1, 2, ... ,k, 有xij = zj。比如Z = 是X = 的子序列。现在给出两个序列X和Y,你的任务是找到X和Y的最大公共子序列,也就是说要找到一个最长的序列Z,使得Z既是X的子序列也是Y的子序列。输入数据输入包括多组测试数据。每组数据包括一行,给出两个长度不超过200的字符串,原创 2013-04-24 15:02:38 · 1224 阅读 · 0 评论 -
一些重要的算法
下面是一些比较重要的算法,原文罗列了32个,但我觉得有很多是数论里的或是比较生僻的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解一下也是好事。也欢迎你留下你觉得有意义的算法。(注:本篇文章并非翻译,其中的算法描述大部份摘自Wikipedia,因为维基百科描述的很专业了)A*搜寻算法俗称A星算法。这是一种在图形平面上,有多个节原创 2013-04-24 15:09:48 · 1006 阅读 · 0 评论 -
dp之最长上升子序列
问题描述一个数的序列bi,当b1 你的任务,就是对于给定的序列,求出最长上升子序列的长度。 解题思路如何把这个问题分解成子问题呢?经过分析,发现 “求以ak(k=1, 2, 3…N)为终点的最长上升子序列的长度”是个好的子问题――这里把一个上升子序列中最右边的那个数,称为该子序列的“终点”。虽然这个子问题和原问题形式上并不完全一样,但是只要这N个子问题都解决了,那么原创 2013-04-24 15:11:30 · 871 阅读 · 0 评论 -
hdu1176-免费馅饼
免费馅饼dp之简单数塔题,关键在于将问题转换成为数塔模型,还需要注意的是下一层的可以取相邻的三个数;转移方程:dp[i][j]=max{dp[i-1][j-1] ,dp[i-1][j],dp[i-1][j+1]}+p[i][j] p[i][j]// File Name: hdu1176.cpp// Author: rudolf// Created Time: 2013年原创 2013-04-24 22:06:41 · 1234 阅读 · 0 评论 -
hdu1159-Common Subsequence
Common Subsequencedp之最长公共子序列// File Name: hdu1159.cpp// Author: rudolf// Created Time: 2013年04月25日 星期四 12时12分33秒#include#include#include#include#include#include#include#include#inc原创 2013-04-25 12:22:18 · 985 阅读 · 0 评论 -
hdu1087-Super Jumping! Jumping! Jumping!
Super Jumping! Jumping! Jumping!dp之最长上升子序和// File Name: hdu1087.cpp// Author: rudolf// Created Time: 2013年04月25日 星期四 12时32分59秒#include#include#include#include#include#include#inclu原创 2013-04-25 12:42:13 · 844 阅读 · 0 评论 -
hdu1421-搬寝室
搬寝室每次执行memset初始化,居然TLE// File Name: hdu1421.cpp// Author: rudolf// Created Time: 2013年04月25日 星期四 13时00分19秒#include#include#include#include#include#include#include#include#include#in原创 2013-04-25 13:20:25 · 969 阅读 · 0 评论 -
Max Sum Plus Plus
Max Sum Plus Plus这个题目爆坑,同样的代码第一遍TLE,第二次AC// File Name: hdu1024dp_zuichangziduanhe.cpp// Author: rudolf// Created Time: 2013年04月23日 星期二 16时25分45秒#include#include#include#include#include#原创 2013-04-25 18:41:01 · 937 阅读 · 0 评论 -
hdu1232-畅通工程
畅通工程我都不知道该怎么形容我最近的状态了,刷水题狂卡,这个题目也是一样,输入n,居然忘了排除n=0// File Name: hdu1232.cpp// Author: rudolf// Created Time: 2013年04月25日 星期四 19时42分58秒#include#include#include#include#include#includ原创 2013-04-25 20:38:57 · 943 阅读 · 0 评论 -
hdu1208-Pascal's Travels
Pascal's Travels这道题目本来DFS没搞懂,后来才发现用DFS也比较简单,题意大致为给你一个正整数N,然后输入N*N矩阵,每个位置代表到下一个位置所增加的步数,上下左右都可以,问你什么时候能到MAPP[n-1][n-1] (因为我的输入从0开始的,MAPP【】【】用于存放图,所以需要转换成int型的)DP// File Name: hdu1208.cpp/原创 2013-04-25 19:13:55 · 1070 阅读 · 0 评论 -
hdu1856-More is better
More is better恶心题目,这个又是因为输入n,排除了0就WA,但是还有个坑爹的地方,find函数中间,直接return(就是缩写)居然TIL,分开写却AC了路径压缩,又补了个漏洞,return fa[x] = x == fa[x] ? x : find(fa[x]);或者 return x == fa[x] ? x : fa[x] = find(fa[x]);原创 2013-04-25 21:07:07 · 819 阅读 · 0 评论 -
hdu1289-A Bug's Life
A Bug's Life #include #include #include #include #include #include #include #define maxn 2005int father[maxn],sex[maxn]; using namespace std;int find(int x) //查找根{ if(father[x]==x)原创 2013-04-25 21:58:26 · 998 阅读 · 0 评论 -
hdu4474-Yet Another Multiple Problem
Yet Another Multiple Problem模型转换 BFS搜索 根据剩余类建图广搜K -Yet Another Multiple Problem点击打开链接此题如果处理得不好可能会造成非常多的特殊情况需要特判。一种比较简洁的处理方法是:首先建有向图i->(i*10+j)%n,然后沿着这个图反向从0'广搜0算出每个点到0的最短距离,最后从0开始沿着这个图正向广搜,利用刚原创 2013-04-26 14:33:10 · 1324 阅读 · 0 评论 -
hdu4473Exam
Exam题意: 定义 f(x) = { num | a*b| x } , 求 \sum { f(x) } , x 思路: 题目等价于求 a*b*c 假定 a 所以我们可以通过枚举 a,b 计算出数量,时间复杂度未 O(n^(2/3)) 对于枚举的 a, b, c; 有三种情况 1 . 三个相等 a, a, a 则只需原创 2013-04-26 20:23:39 · 1053 阅读 · 0 评论 -
hdu1213-How Many Tables
How Many Tables并查集之求最小不相交集合数目// File Name: hdu1213.cpp// Author: rudolf// Created Time: 2013年04月26日 星期五 21时49分26秒#include#include#include#include#include#include#include#include#incl原创 2013-04-26 21:55:56 · 831 阅读 · 0 评论 -
hdu1272-小希的迷宫
小希的迷宫// File Name: hdu1272.cpp// Author: rudolf// Created Time: 2013年04月27日 星期六 13时32分01秒#include#include#include#include#include#include#include#include#include#include#include#inclu原创 2013-04-27 14:17:34 · 1011 阅读 · 0 评论 -
hdu1233-还是畅通工程
还是畅通工程最小生成树Kruscal+并查集// File Name: hdu1233.cpp// Author: rudolf// Created Time: 2013年04月27日 星期六 15时45分12秒#include#include#include#include#include#include#include#include#include#原创 2013-04-27 15:55:33 · 1024 阅读 · 0 评论 -
hdu1863-畅通工程
畅通工程最小生成树,通过统计连通路的个数和总路数比较,来判断是否所有的路径都已经连通了,需要注意的是这里sum应该从1 开始,因为一开始就是从某一条路出发的// File Name: hdu1863.cpp// Author: rudolf// Created Time: 2013年04月27日 星期六 15时21分31秒#include#include#include#原创 2013-04-27 15:38:11 · 944 阅读 · 0 评论 -
畅通工程续
畅通工程续第一个Dijkstra,呵呵,纪念下// File Name: hdu1874.cpp// Author: rudolf// Created Time: 2013年04月27日 星期六 16时06分12秒#include#include#include#include#include#include#include#include#include#i原创 2013-04-27 17:05:38 · 959 阅读 · 0 评论 -
八数码的八境界
研究经典问题,空说不好,我们拿出一个实际的题目来演绎。八数码问题在北大在线测评系统中有一个对应的题,题目描述如下:EightTime Limit: 1000MS Memory Limit: 65536K Special JudgeDescription The 15-puzzle has been around原创 2013-04-28 14:44:16 · 1436 阅读 · 1 评论 -
矩阵链乘法
Description给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。 Input有N个矩阵连乘,用一行有n+1个数数组表示,表示是n个矩阵的行及第n个矩阵的列,它们之间用空格隔开. Output你的输出应该有C行,即每组测试数据的输出占一行,它是原创 2013-04-24 15:14:41 · 1091 阅读 · 0 评论 -
扩展KMP
刘雅琼PPT讲解链接: http://wenku.baidu.com/view/8e9ebefb0242a8956bece4b3.html扩展KMP: 给出模板串A和子串B,长度分别为lenA和lenB,要求在线性时间内,对于每个A[i](0 求出A[i..lenA-1]与B的最长公共前缀长度,记为ex[i](或者说,ex[i]为满足A[i..i+z-1]==B[0.原创 2013-04-14 00:35:21 · 1383 阅读 · 0 评论 -
水池数目
水池数目// File Name: ny0j27.cpp// Author: bo_jwolf// Created Time: 2013年04月30日 星期二 14:51:16#include#include#include#include#include#include#include#include#include#include#include#incl原创 2013-04-30 15:04:08 · 932 阅读 · 0 评论 -
ACM 训练大纲(CSUST_ACM)
ACM 训练大纲Changsha University of Science & TechnologyJuly 31, 20121 推荐题库• http://ace.delos.com/usaco/美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以baidu 一个叫N原创 2013-04-29 16:56:00 · 2463 阅读 · 2 评论 -
ACM知识点分类
第一类:基础算法(1) 基础算法:枚举,贪心,递归,分治,递推,构造,模拟(2) 动态规划:背包问题,树形dp,状态压缩dp,单调性优化,插头dp(3) 搜索:dfs,bfs,记忆化搜索,优化与剪枝,双广,A*,IDA*,跳舞链第二类:数据结构(1) 简单数据结构:链表,栈和队列,串,树和二叉树,图,排序与检索(2) 树形结构:线段树,树状数组,字典原创 2013-04-29 22:28:00 · 1035 阅读 · 0 评论 -
图像有用区域
点击打开链接题目有点坑,注意先输入N,后输入M,优化在图的最外层再添加一层// File Name: nyoj92.cpp// Author: bo_jwolf// Created Time: 2013年04月30日 星期二 15:20:24#include#include#include#include#include#include#include#i原创 2013-04-30 15:45:44 · 1108 阅读 · 0 评论 -
poj2406-Power Strings
Power Strings第一个KMP的题目,感觉蛮好的,虽然以前也敲过,但是当时不是很理解为什么要这样用,后来知道它的原理后,但是一直没有做过相应的题目,虽然这只是一个基础题,但是这也意味着一个好的开始上面这个是伪造的KMP,下面那个是KMP的典型模板#include#include#include#includeusing namespace std;const i原创 2013-04-29 20:26:54 · 1024 阅读 · 0 评论 -
hdu3336-Count the string
Count the string使用get_next函数多了,渐渐对get_next函数的理解又深了一点点,这其中dp[i]从1加到ndp[i]=dp[next[i]]+1;// File Name: hdu3336.cpp// Author: bo_jwolf// Created Time: 2013年04月30日 星期二 20:39:15#include#原创 2013-04-30 20:51:39 · 1142 阅读 · 0 评论 -
hdu2594-Simpsons’ Hidden Talents
Simpsons’ Hidden Talents上面的KMP模板是套用别人的// File Name: hdu2594.cpp// Author: bo_jwolf// Created Time: 2013年04月30日 星期二 18:42:23#include#include#include#include#include#include#include#i原创 2013-04-30 18:47:29 · 926 阅读 · 0 评论 -
网络流题目集锦
最大流 POJ 1273 Drainage Ditches POJ 1274 The Perfect Stall (二分图匹配) POJ 1698 Alice's Chance POJ 1459 Power Network POJ 2112 Optimal Milking (二分) POJ 2455 Secret Milking Machine (二分) POJ 318原创 2013-04-29 22:26:47 · 1033 阅读 · 0 评论 -
poj3624-Charm Bracelet
Charm Bracelet爆BT的水题,并不是说这个题目简单中了里面有什么恶心的地方,而是今天用VC敲代码,结果发现库函数max居然说没有定义,但是我直接交上去就过了 #include#include#include#include#includeusing namespace std;const int maxn = 34020 ;int dp[ max原创 2013-04-29 17:13:01 · 1223 阅读 · 0 评论 -
kmp总结及其应用
这个是我的学长关于KMP的总结,感觉比较好。。。 上几天发现遇到一道kmp题,发现对其理解不够透彻,然后这两天对kmp重新做了一个总结.并在poj上找了部分题目作为测试.因为帖子里头贴代码,有点长,所以就只写思路了, 具体代码实现可以参考 http://www.cnblogs.com/yefeng1627kmp含义 克努斯-莫里斯-普拉特算法,一种字符串查找原创 2013-04-29 20:42:24 · 1188 阅读 · 0 评论 -
hdu1711-Number Sequence
Number Sequence坑爹,用c++输入输出又TLE了。// File Name: hdu1711.cpp// Author: bo_jwolf// Created Time: 2013年04月30日 星期二 19:07:27#include#include#include#include#include#include#include#include#原创 2013-04-30 19:17:40 · 974 阅读 · 0 评论 -
1504: ZZ的橱柜
1504: ZZ的橱柜优先队列// File Name: 1011.cpp// Author: rudolf// Created Time: 2013年04月28日 星期日 15时44分43秒#include#include#include#include#include#include#include#include#include#include#i原创 2013-04-28 16:26:35 · 1731 阅读 · 0 评论 -
zoj1092-Arbitrage
这道题目虽然是理解了书上的代码,然后自己敲出来的,但是仍然收获不少,例如其中处理字符串时保留它的数字,然后来进行判断,条理比较清晰,也初略了解了bellman-ford算法,虽然和Dijkstra的思想完全理解透,还需要努力#include#include#include#includeusing namespace std ;const int maxn = 50 ;cons原创 2013-05-15 19:51:41 · 1178 阅读 · 0 评论 -
图论最短路之bellman-ford
#include#include#includeusing namespace std ;const int INF = 1000000 ;const int maxn = 8 ; int n ;int edge[ maxn ][ maxn ] ;int dist[ maxn ] ;int path[ maxn ] ;void bellman( int v0 ){ int原创 2013-05-15 14:43:38 · 1265 阅读 · 0 评论 -
hdu1546-Idiomatic Phrases Gamehttp
http://acm.hdu.edu.cn/showproblem.php?pid=1546Dijkstra求解最短路,但是题意中规定当某一字符串的首尾字符相同时才能连接,但是使用如下的方法,这个条件就被忽略了(暗含已经判断了);题意大致为给定一个整数 和一串字符串,当字符串末端的四个字符与另一字符串的首端四个字符相同时,加上前面的字符串,然后找出连接状态的最小值,而且每一个符合条件的字原创 2013-05-16 14:48:03 · 1035 阅读 · 0 评论 -
hdu2544-最短路
http://acm.hdu.edu.cn/showproblem.php?pid=2544Dijkstra模版题,Dijkstra模版终于初步确定了#include#include#include#includeusing namespace std ;const int INF = 1000000 ;const int maxn = 105 ;int edge原创 2013-05-15 21:54:25 · 872 阅读 · 0 评论