摘要: 链接:http://poj.org/problem?id=3280题意:现在有一个由n个字符组成的长度为m的字符串,可以对其通过增加字符或者删除字符来使其变成回文字符串,而增加或者删除字符都有一个花费,求解使该字符串变成回文所进行操作的最小花费;思路:dp3种基本思路:1、一维线性dp:每次考虑i时,选择最优子问题要么在i-1,要么在1...i-1里;2、二维线性dp:考虑(i,j)子问题时,选择最优子问题要么在(i+1,j)、(i,j-1),要么在i<= k <=j,在k里;3、树形dp:考虑i节点最优时,选择子节点最优,一般融合了01背包dp的双重dp。本题属于第二种, 对于每 阅读全文
posted @ 2013-01-15 14:18 淡墨æ末央 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 链接:http://poj.org/problem?id=2414题意: 一颗完全二叉树,有 N ( n <= 1024,且必定为2的整数幂,意味着是一颗完全二叉树 ) 个叶子节点,每一个节点都含有一个长度为 LL ( L <= 1000 ) 的串 ( 串仅由大写字母构成), 现仅仅知道N个叶子节点串的组成.其他节点串不知道,若直接父节点相同的两个子节点,其对应位置不同则花费为1. 整棵树花费最小;思路: 对于同一父亲节点上的两个子节点, 在相同位置上的字符如果相同, 那么它们的父亲节点在该位置唯一确定, 且花费不变, 对于不同的字符, 我们要保留它们两个的信息, 都传给父亲节点, 阅读全文
posted @ 2013-01-15 12:58 淡墨æ末央 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 链接 :http://poj.org/problem?id=1054题意:有一个r*c的方格,青蛙会以相同的向量v=(x,y)跳过,跳过的地方留下痕迹,青蛙在格子外哪里出发都有可能,问有最多有多少只青蛙;思路:先把点排序, 使其有序化, 然后枚举任意两点所在的直线, 看有多少点落在直线上, 求其最大值;View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <string> 4 #include <cstring> 5 #include <cmath> 6 #inc 阅读全文
posted @ 2013-01-15 10:02 淡墨æ末央 阅读(208) 评论(0) 推荐(0) 编辑