相同点:贪心算法和dp都是一种递推算法,是一种解题的思想都是由局部最优解来推导全局最优解不同点:贪心算法:1.贪心算法中,作出的每步贪心决策都无法改变,因为贪心策略是由上一步的最优解推导下一步的最优解,而上一部之前的最优解则不作保留。2.由(1)中的介绍,可以知道贪心法正确的条件是:每一步的最优解一...
分类:
其他好文 时间:
2014-08-07 13:00:59
阅读次数:
178
题目:uva10891 - Game of Sum(递推)
题目大意:给出N个数,然后有两个小伙伴在玩游戏,每次可以从这一排数字的两侧中选择一侧开始取连续的数,必须取一个,也可以取完。这两个小伙伴都会采用最优的策略来取数,问第一个小伙伴取数的和与第2个小伙伴取数的和的差值。
解题思路:这题刚开始没什么头绪,只要碰到博弈思想的题目就没什么想法。看了别人的题解才明白。
...
分类:
其他好文 时间:
2014-08-06 23:08:12
阅读次数:
234
题目:uva10405 - Longest Common Subsequence(LIS,最长共同自序列)
题目大意:找出两个字符串中的最长公共的子序列。
解题思路:这类问题是第一次接触,不知道怎么做。百度了一下,发现了递推公式:dp【i】【j】:代表第一个字符串的前i个字符和第二个字符串的前j个字符比较能得到的最长的公共子序列。s【i】 == s【j】 ,dp【i】【j】...
分类:
其他好文 时间:
2014-08-06 23:04:32
阅读次数:
243
题意:
求题目中的式子 - -b
思路:
推递推公式 比赛时候队友就说数字上有关系 but没推出来 - -b 题解有过程:
推的过程中最巧妙的就是利用异或的性质 相邻两个数字相当于修改二进制最后两位 不过这样做通过异或出来的结果是相同的
题目中数字太大 用java比较好写 处理递推的问题常用记忆化搜索
代码:
import java.util.*;
import...
分类:
其他好文 时间:
2014-08-06 11:55:01
阅读次数:
268
题目:uva11258- String Partition(递推)
题目大意:给出一系列的数字,它是由很多int型的数构成的,就是中间没有加空格。所以现在问怎样拆分这些数,使得这些数之和最大。
解题思路:这里要求是int型的整数,单个数的最大的值2147483647.dp【i】【j】代表这个数字串第i个字符到第j个字符能够得到的最大的和。
...
分类:
其他好文 时间:
2014-08-05 22:42:51
阅读次数:
267
题意:给一个递推式S(n) = a1*S(n-1)+...+aR*S(n-R),要求S(k)+S(2k)+...+S(nk)的值。分析:看到n的大小和递推式,容易想到矩阵快速幂。但是如何转化呢?首先看到我们用A表示上面的递推式中的R*R的那个矩阵,那么对于前面那个向量,每次乘上A^k之后都会变成(S...
分类:
其他好文 时间:
2014-08-05 22:17:50
阅读次数:
230
题意:求一个b数组,b数组中的所有数互质,和a数组对应下标的数的差的绝对值最小。
考虑a数组中的所有数范围为[1,30]则,b数组取值只有可能为[1,59),因为如果取到59及其以后,肯定可以取1,59-30=30-1;而且1可以取多次,1与任何数互质。
然后首先需要把[2,59)之间的素数取出来,总共16个。然后状压,1代表那一位的素数因子是否存在。
d[i][s][0]表示递推到第i个位...
分类:
其他好文 时间:
2014-08-05 19:34:22
阅读次数:
271
也是道简单递推题,思路和上一道完全一样,要注意的是数组要开__int64输出用“%I64d”,不然会WA。这道题数组是求到50,看来50就超过int了,以后这方面要注意。 1 #include 2 __int64 a[55]; 3 int main() 4 { 5 int i,j,x,y; ...
分类:
其他好文 时间:
2014-08-05 13:29:09
阅读次数:
205
题目:uva10401Injured Queen Problem(递推)
题目大意:依旧是在棋盘上放皇后的问题,这些皇后是受伤的皇后,攻击范围缩小了。攻击范围在图中用阴影表示(题目)。然后给出棋盘的现状,???3?4:在一个6*6的棋盘上,因为皇后是可以列向攻击的,所以一列只能放一个皇后,所以第一个?代表第一列的皇后放的行未知,这样3的意思就是第4列皇后在第三行,也就是确定了第4列皇...
分类:
其他好文 时间:
2014-08-05 11:23:10
阅读次数:
211
简单的递推,上到第M层,可以从第M-1层上来,也可以从M-2层上来,所以上到第M层的方法等于上到第M-1层的方法加上上到第M-2层的方法。递推公式:F(M)=F(M-1)+F(M-2) F(1)=1,F(2)=1,F(3)=2打表 1 #include 2 int a[45]; 3 int main...
分类:
其他好文 时间:
2014-08-05 11:02:59
阅读次数:
193