ACM算法
安嘉
这个作者很懒,什么都没留下…
展开
-
动态规划经典问题----0-1背包问题
要用动态规划来求解问题,我们首先要理解动态规划的本质是什么? 动态规划算法与分治法类似,其基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解,与分治法不同的是,适合于用动态规划求解的问题,经分解得到的子问题往往不是独立的。这是什么意思呢,其实就是说:当你求解你分解好的子问题时,有可能用到另一个子问题的解,这个时候,如果之前求完的那个子问题你没有保存结原创 2012-02-15 10:07:06 · 1316 阅读 · 0 评论 -
动态规划经典问题---最长公共子序列(LCS)
什么是子序列呢?子序列就是从给定的序列中随意的(不一定是连续的)去掉若干个元素(也可能一个也不去掉)后所形成的序列。如X=ABCBDAB,Y=BCDB就是X的一个子序列。 最长公共子序列问题描述为:给定序列X=x1x2x3x4...xm, Y=y1y2y3y4...yn. 求出序列X和Y的最长公共子序列Z。 我们首先想到了用穷举法,首先列举出序列X的所有子序列,并一一检测是不确Y原创 2012-02-15 14:52:06 · 847 阅读 · 0 评论 -
动态规划经典问题---矩阵链乘
问题描述:给定n个矩阵{A1,A2,A3...An},其中Ai与Ai+1是可乘的,i=1,2,3...n-1.考虑这n个矩阵的乘积。由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算机次序。这种计算次序可以用加括号的方式确定。若一个矩阵链乘的计算次序完全确定,这时就说该链乘已完全加括号。完全加括号的矩阵链乘可递归的定义如下: 1,单个矩阵是完全加括号的。 2,矩阵原创 2012-02-15 19:18:28 · 1549 阅读 · 0 评论 -
HDOJ--2059 龟兔赛跑
这个题目网上大多数人包括我,一开始都想的复杂了,都开了两个数组,记录到达某一加油站的最短时间和剩余油量。这种方法其实也是正确的,只不过画蛇添足了,如果这个方法运用了正确的DP思路,最终结果其实也是对的,但是,关键是一般用这个方法的同学DP的思路想错了,最终写的是当前最优,而不是全局最优。 比如,:A ,P1,P2,P3,P4,P5,B ,假设我们现在已经求出了分别到加油站P1,P2,P3,原创 2012-02-16 19:15:23 · 715 阅读 · 0 评论 -
HDOJ 1254 推箱子
这个题几乎都会想到要用双重BFS来做。。。我有两点没考虑到:1 每个箱子可以从不同方向进入同一个方格。2 当用BFS搜索人到箱子后边要推的方格时,要注意,人本身就站在箱子后边的情形,所以在这个BFS开始先得判断是否如此情况。。我就是因为这个没考虑到而让我蛋疼了好久。。。还有注意,当方格是箱子所在方格的时候,也不能过去。。。 只要按下面三点来做就可 1 箱子可以移动2原创 2012-07-05 17:16:16 · 485 阅读 · 0 评论 -
HDOJ 2364 Escape
这个题虽说是一个简单的BFS问题,但是耗费了我好长时间,而且AC的是相当蛋疼。关键注意几下几点:1:血的教训:可能初始位置即为出口位置(即初始就在房间的边缘),此时所用时间为0.2:每一个格子要保存是从哪个方向到达的。也就是曾经有哪一个方向到达了它,只有曾经在某个方向从没到达过它,这时才入栈...3:再就是不能回头。 AC代码:#include#includeusi原创 2012-06-30 07:59:57 · 362 阅读 · 0 评论 -
HDOJ 1O10 Tempter of the Bone
这道题是一道相当经典的DFS+剪枝。。。做这道题收获比较大,能让你学会几个剪枝技巧。。一般做这道题的都会把DFS写出来,不难,关键是超时怎么处理,反正在我看了网上的关于剪枝技巧后,当时就有一个感觉,要是别人不跟我说,打死我也想不出来,虽然学起来很简单。。。下面是别人写的报告:1 奇偶剪枝:把矩阵标记成如下形式:0,1,0,1,01,0,1,0,10,1,0,1,0原创 2012-07-03 13:10:16 · 792 阅读 · 0 评论