
DP
文章平均质量分 77
insistGoGo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
聪明的“KK”
一个小动物“KK”正从沙漠区域(矩形)的左上角沿着向右或向下的方向往右下角跑去。KK太聪明了,它居然能在跑的过程中会选择吃掉尽可能多的虫子线路。你知道它吃掉多少虫子吗? 【标准输入】 第一行:N M 表示沙漠是一个N*M的矩形区域 接下来有N行:每行有M个正整数,Xi1 Xi2 ……Xim 表示各位置中的虫子数(单个空格隔开) 【标准输出】 输出有一个整数原创 2013-07-17 09:00:23 · 1558 阅读 · 0 评论 -
每日一题(49) - 最长回文子串
子串:字符串中连续的字符片段。 回文:正着看和反着看都一样的字符串。如abba和abbebba是回文,bbab不是回文。 最长回文子串:对于字符串的所有子串,找出是回文且最长的那一个 举例: (1)babcbabcbaccba的最长回文子串是abcbabcba (2)bbbb的最长回文子串是其本身 这里给出DP算法,其属于区间动态规划。 代码 #include #include原创 2013-07-23 20:36:27 · 1093 阅读 · 0 评论 -
每日一题(50) - 绝对值最大的子序列和以及其区间
题目来自网络 题目:给定数组,求其 绝对值最大的子序列和以及对应的区间 举例:数组{-5,4,-20,16,-2,-3}的绝对值最大的子序列和为-21,其区间为[0,2] 思路:可以使用动态规划求解 由于求解的是绝对值最大,需要考虑负值。结果可以转化为要么是和最大(正数),要么是和最小(负数)。 可以使用两个数组保存以第i个数为止的子序列之和的最大值和最小值,之后可以根据这个最大值和最小原创 2013-07-24 15:03:29 · 2525 阅读 · 0 评论 -
每日一题(51) - 最大子序列积以及区间
#include <iostream> #include <assert.h> using namespace std; //Max[i] = max(nArr[i],Max[i - 1] * nArr[i],Min[i - 1] * nArr[i]) //Min[i] = min(nArr[i],Max[i - 1] * nArr[i],Min[i - 1] * nArr[i]); //初始化 //Max[0] = nArr[0] //Min[0] = nArr[0] int Max(int x,i原创 2013-07-24 21:18:34 · 1019 阅读 · 0 评论 -
求解区间最值的ST算法
作用:ST算法是用来求解给定区间RMQ的最值,本文以最小值为例 举例: 给出一数组A[0~5] = {5,4,6,10,1,12},则区间[2,5]之间的最值为1。 方法:ST算法分成两部分:离线预处理 (nlogn)和 在线查询(O(1))。虽然还可以使用线段树、树状链表等求解区间最值,但是ST算法要比它们更快,而且适用于在线查询。 (1)离线预处理:运用DP思想,用于求解区间最值,并保原创 2013-08-12 18:24:56 · 8140 阅读 · 4 评论 -
编辑距离
题目: 假设,字符串仅有三个基本操作:删除一个字符、插入一个字符和将一个字符修改成另一个字符。 基本的字符操作:进行了一次上述三种操作的任意一种操作 两个字符串的编辑距离的定义:通过上述的基本操作,我们可以把字符串a变成字符串b,所需要的最少基本字符操作次数 举例:snowy 与 sunny 的编辑距离为3 我们的任务:计算任意两个字符串的编辑距离 状态转移方程 d[ i ][ j原创 2013-02-01 15:42:09 · 927 阅读 · 1 评论 -
背包问题九讲笔记_多重背包
摘自Tianyi Cui童鞋的《背包问题九讲》,稍作修改,方便理解。 本文包含的内容: 问题描述 基本思路(和完全背包类似) 转换为01背包问题求解(直接利用01背包) --------------------------------------------- 1、问题描述 已知:有一个容量为V的背包和N件物品,第i件物品最多有Num[i]件原创 2013-09-05 21:56:22 · 11298 阅读 · 3 评论