2013年6月13日

uva10534 - Wavio Sequence(动归,最长上升子序列)

摘要: 这道题目用到了最长上升子序列的o(nlogn)算法,建议没学过此类新算法的同学先做一下poj上的简单题目,学习一下求LIS的O(n^2)和O(nlogn)算法,资料见http://wenku.baidu.com/view/fe0deecea1c7aa00b52acb71.html这个题目让我们求波形序列,我们可以分成两个子问题,求1......i的上升序列长度len1和求n.....i上升序列长度len2,那么以i为中心的上升序列长度就是min(len1,len2)*2-1.思路:摘自百度文库。链接同上。。。算法2(nlogn):维护一个一维数组c,并且这个数组是动态扩展的,初始大小为1,c[ 阅读全文
posted @ 2013-06-13 17:50 Primo... 阅读(541) 评论(0) 推荐(0) 编辑

poj1609 - Tiling Up Blocks(动归)

摘要: 转自大神的话:刚开始想到的是用节点来进行dp。。。但是一看数量肯定是要超时的了。。。后来看到了 数据的范围比较小。。就想到了用数据来进行dp有的时候同样的方法在这个角度来看可能不行。。。但是换一个角度就海阔天空了。。。。状态:dp[i][j]表示用到长宽为i,j的砖所能达到的最大高度。状态转移:dp[i][j] = max(dp[i-1][j],dp[i][j-1])+w[i][j];这是我见过动归里比较偏向考察思路的题目,w[i][j]标识长宽为I,j的砖的个数。复杂度为o(m^2)(m= 100) .这个思路简直让复杂度发生了质变。代码如下:#include #include #inc.. 阅读全文
posted @ 2013-06-13 17:09 Primo... 阅读(128) 评论(0) 推荐(0) 编辑

poj1887 - Testing the CATCHER(动归)

摘要: 最长不上升子序列。把最长上升子序列的代码稍微改动一下即可详解请见:http://wenku.baidu.com/view/fe0deecea1c7aa00b52acb71.html#include #include #define N 10005 int n, a[N], c[N], dp[N]; int search(int l, int r, int x) { int mid; while(lc[1]) j = 1; else if(a[i]<c[size]) j = ++size; else j = search(1,s... 阅读全文
posted @ 2013-06-13 09:48 Primo... 阅读(147) 评论(0) 推荐(0) 编辑