题目:给你一个字符串,可以进行增删改三种操作,问变成回文串最少的操作次数。
分析:动态规划,dp,LCS。可以利用区间dp求解,这里利用LCS求解更快。
利用字符串和自己的翻转求最大公共子序列,然后枚举所有的dp[i][len-i],
找最小的即可。注意可能最小值在dp[i-1][len-i],即str[i]为中间元素,不用匹配。
说明:注意...
分类:
其他好文 时间:
2015-06-23 15:38:53
阅读次数:
77
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For example, given the following triangle[
[2],
[3,4],
[6,5,7],...
分类:
其他好文 时间:
2015-06-14 18:36:11
阅读次数:
136
问题描述一个数的序列aia_i ,当a1<a2<...<aS a_1 < a_2 < ... < a_S的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,aN)(a_1 , a_2, ..., a_N),我们可以得到一些上升的子序列(ai1,ai2,...,aik)(a_{i1} ,a_{i2}, ...,a_{ik}) ,这里1<=i1<i2<...<iK<=N1 <= i1...
分类:
其他好文 时间:
2015-05-30 09:21:32
阅读次数:
129
令a=min{one,two},b=max{one,two}使用动态规划从低到高依次记录下能买到的数即可,动态检测第一次出现连续a长度数列的时候,这时候该连续数列的第一项减一即为所求最大的不能组合的数字。...
分类:
其他好文 时间:
2015-05-24 15:48:05
阅读次数:
154
题目描述 Description
将整数n分成k份,且每份不能为空,任意两种划分方案不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种划分方案被认为是相同的。
1 1 5
1 5 1
5 1 1
问有多少种不同的分法。
输入描述 Input Description
输入:n,k (6
输出描述 Output Description
...
分类:
其他好文 时间:
2015-05-10 15:48:54
阅读次数:
124
背包九讲里面的多重背包问题。每一块积木有高度和数量,也有最大能到的高度位置限制。我们DP前首先要对高度限制进行排序,因为从直观角度说,我们也需要先处理较小的能到高度的积木,这样才能取到最大值。例如第一个高度是11,限制高度是100,第二个的限制高度是10,那如果直接处理,第二个不会被处理到。
#include
#include
#include
#define max(x,y)(x>y?x:y...
分类:
其他好文 时间:
2015-05-08 10:59:02
阅读次数:
211
UVA - 1213
Sum of Different Primes
Time Limit: 3000MS
Memory Limit: Unknown
64bit IO Format: %lld & %llu
Submit Status
Description
A positive integer may be ex...
分类:
其他好文 时间:
2015-05-07 06:30:45
阅读次数:
168
这道题目我一开始的思路是用二维DP,结果TLE了。后来换了个思路,终于AC了。
不需要判断所有的情况,我们用dp[i]表示前i个牛圈中最大的牛数,而这个i首先必须>=限制的牛圈树f。用num[i]表示dp[i]中包含了多少牛圈。
我们可以知道,dp[i] = sum[i] - sum[i-f])/f or dp[i-1] + data[i], 前一个代表到i为止前f个牛圈的牛数,后一个代表...
分类:
其他好文 时间:
2015-05-05 16:25:28
阅读次数:
122
这一题其实就是斐波那契数列,但是我一开始用的是DP,不过应该思想差不多。
一数组dp[i][2],dp[i][0]代表前i个数里面最后一个数字为0的数量,dp[i][1]代表前i个数里面最后一个数字为1的数量,可知dp[i][1]+dp[i][0]就是前i个数能组成序列的数量。
这里因为不能2个1在一起,所以:
dp[i][0] = dp[i-1][0]+dp[i-1][1]
dp[i][...
分类:
其他好文 时间:
2015-05-04 18:19:23
阅读次数:
128
动态规划
01背包
问题描述
求解思路
代码实现
放入哪些物品
代码动态规划我在上一篇博客里已经讲了一点动态规划了,传送门:算法学习 - 动态规划(DP问题)(C++)这里说一下,遇到动态规划应该如何去想,才能找到解决办法。最主要的其实是要找状态转移的方程,例如上一篇博客里面,找的就是当前两条生产线的第i个station的最短时间和上一时刻的时间关系。minTime(station[1][i]) =...
分类:
编程语言 时间:
2015-04-28 22:54:46
阅读次数:
256