
ACM-动态规划
文章平均质量分 62
GJ_FB_dabai
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
pku_2250_Compromise
一个比较简单的最长公共子序列.题目大意: http://poj.org/problem?id=2250给出两段文字(以#号结束),求其中一样的单词的最大公共子序列,并记录结果.需要注意的是,有多组数据,需要判断.还有就是 可以有一样的单词~因为这个wa了一次.解题思路:1.因为只有100个单词,将每个单词编号,这样求lcs时候就对编号求就可以,不用比较每个字符串了.原创 2013-04-10 17:34:17 · 554 阅读 · 0 评论 -
pku_1159_Palindrome
题目大意:给一个字符串,问添加几个字母,可以组成一个回文串.解题思想:一道简单的最长公共子序列,值得一写是因为比较特殊~一个字符如果要组成回文串,所添加的字符数是字符串长度 - 正序和逆序串的最大公共子序列.用到了lis空间优化.时间复杂度 O(n^2) 空间复杂度 O(n*2)源代码:#include const int N=5100;int n;原创 2013-04-11 19:43:17 · 523 阅读 · 0 评论 -
腾讯编程马拉松-吉哥系列故事——完美队形I hdu_4512
简单的dp 两组数据的最长公共升序子序列,遗憾的要死哟~当时紧张个什么劲呢~解题思路:就是要一个回文的升序子序列嘛~ 将原数组倒转,就转化成求两个串的最长公共lis .唯一不同的就是两个串的长度应该是动态的.而根据"如果m是奇数,中间那个人可以任意",那么两个串所对应的去区间就应该是 [1,m] [n,m] ,即当i=m时,j=n-i+1,求出两个串的lis后乘以二即可 例如第一个例子原创 2013-04-13 20:07:03 · 668 阅读 · 0 评论 -
hdu_1074_Doing Homework
一个裸状态压缩~题目大意: 一共有N门作业,三个数据是作业的名字,到期时间,和完成需要天数,完成做也期限超过一天扣一分.问以什么顺序完成作业可以使扣得分最少.如果有相同的分数名字按字典序排序.状态转移方程: dp[i]=min(dp[j]+hw[k]-hwlast[k])+hw[k]; j为i中去掉第k个作业的状态,hw[k]为当前作业需要几天完成,hwlast为当前作业完成期限为多少,原创 2013-05-15 16:48:52 · 671 阅读 · 0 评论 -
hdu_2167_Pebbles
一个裸状态压缩DP~处理起来很烦人的题.题目大意: http://acm.hdu.edu.cn/showproblem.php?pid=2167给一个N*N的大方格,每个小方格上有一个值,选择了一个小方格那么就不能选择它周围的八个格子了.大格子周围是相连的(应该是个圆~~~),最右边的格子的右边按第一个算,对角线也不能选.N解题思想:一看15就知道是状态压缩了,首先纪录可行状态原创 2013-05-16 20:14:36 · 759 阅读 · 0 评论 -
hdu_4303_Hourai Jeweled
总共研究了七-八个小时,终于弄出来了,开心呀.一道难题能顶十道水题这句话确实有道理.树形DP+子树合并,一次DFS即可完成.中等难度,难点在子树合并的细节.题目大意: http://acm.hdu.edu.cn/showproblem.php?pid=4303给一棵树,每个结点有个权值,每个边有颜色,求整棵树中相邻边颜色不同的路径的总权值的合.值得注意的是像题目中 1->2->6原创 2013-05-07 20:38:58 · 713 阅读 · 0 评论 -
hdu_1565_方格取数(1)
各种裸的状态压缩嗯~中文题就就不翻译了~ http://acm.hdu.edu.cn/showproblem.php?pid=1565解题思想:有两个比较重要的地方:1. 纪录可行状态. 例如当前状态i为101011,那么判定状态是否可行为(i&(i2. dp[2][M]作为滚动数组,我的方法是两个指针交换(很多人都用奇偶数的方法).先初始化第一行,dp[0][i]为第原创 2013-05-14 21:49:21 · 660 阅读 · 0 评论