划分DP第三题,wikioi 1040,送我n个WA~~~题目大意:
这道题题述有着UVA的特色,够废话,其实就是读入一个长度最大200的字符串(不知道为何要分行输入,完全没有意义啊),分成m部分,使各部分单词量加起来最大
解题思路:
这题划分的部分跟乘积最大那题其实很像,状态转移方程也很容易想到:
dp[i][k]=max(dp[i][k],dp[j][k-1]+scnt[j+1][i])...
分类:
其他好文 时间:
2015-02-22 14:34:57
阅读次数:
179
依旧是《训练指南》上的一道例题。思路大致相同,即设有一个序列S(i),S(i+1),S(i+2)...S(j),d[i,j]为所求的解。当S(i)==S(k),id[i,j]+=d[i+1,k-1]*d[k,j]直到k>j。最后的d[i,j]就是序列S(i)..S(j)的解。那么题目最终的解即为d[0,n-1],n为序列的长度。
不过,在具体的解法上,我和书上的做法不一样。书上使用的是递归,而我...
分类:
其他好文 时间:
2015-02-21 17:45:42
阅读次数:
160
划分型DP,是解决跟划分有关的题目的一种DP思路,个人觉得,是目前接触的DP类型中最难的一种,因为感觉思路并不确定,不过正是不确定,才可以体会到算法的精妙之处。题目链接:wikioi_1017
要求是将一个n位的数分成m部分,使各部分的乘积最大。解题的思路基于一个事实:当前的数可以分成m-1部分,那么加多几位分成m部分不是可以从原来的推出来。从这句差不多是废话的话中我们就可以推出状态转移方程:...
分类:
其他好文 时间:
2015-02-21 16:38:54
阅读次数:
3407
划分型DP第二题,wikioi 1039,与第一题乘积最大思路有所不同。题目要求:
将一个数划分成几部分,问一共有多少种分法。
真 · 解题思路:
其实跟小学奥赛的一些题有点像,我们先来看一个例子:
7 分成 3 部分,有四种办法:
1,1,5;1,2,4;1,3,3;2,2,3 。
我们人脑来考虑问题的时候是怎么想的呢?显然,从1开始,1是第1部分,然后剩下6分成2部分,我们依然是从1...
分类:
其他好文 时间:
2015-02-21 16:37:05
阅读次数:
189
挺简单的先谈状态 dp[i][j]表示i---j之间的最少需要加的括号数再谈转移 if S 为 合法序列 那么 (S),[S] 都为合法序列,那么dp[i][j] = dp[i +1][j - 1];if A 为合法序列 && B为合法序列 那么 AB 为合法序列 dp[i][j] = dp[i][...
分类:
其他好文 时间:
2015-02-21 15:24:40
阅读次数:
136
用动态规划算法来求,设dp[j]表示选了j张牌的种类数。
起初dp[j]=0(j>0),dp[0]=1。
第一层枚举牌的种类A?K,第二层倒着枚举当前选了j张(1=<j<=17),第三层dp[j]由dp[j?k]更新而来(1=<k=0)。
如果大小王都不在,则有dp[17]种;如果大小王只有一个,则有dp[16]种;如果大小王都在,则有dp[15]种。所以......
分类:
其他好文 时间:
2015-02-21 14:20:59
阅读次数:
346
LIS(Longest Increasing Subsequence)最长上升子序列 或者 最长不下降子序列。很基础的题目,有两种算法,复杂度分别为O(n*logn)和O(n^2) 。**********************************************************...
分类:
其他好文 时间:
2015-02-20 22:00:21
阅读次数:
245
题目大意有排成一排的nn个弓箭手,第ii个弓箭手有 hih_i 的血量。主角可以使用火球术去攻击弓箭手。被直接攻击的弓箭手ii受到aa点伤害,同时第i?1i-1个和第i+1i+1个弓箭手会受到bb点伤害。当弓箭手的血量小于00时弓箭手死亡。问最少需要释放多少个火球术,每个火球术攻击的是第几个弓箭手。解题思路这是一个动态规划问题。定义一个四维dpdp数组。对于dp[i][j][k][l]dp[i][j...
分类:
其他好文 时间:
2015-02-20 20:54:50
阅读次数:
419
描述
有一个5*N的棋盘,棋盘中的一些格子已经被染成了黑色,你的任务是对最少的格子染色,使得所有的黑色能连成一块。
http://codevs.cn/problem/1050/ 分析
CODEVS 题解里有个很良心的人, 我是看了他的才写的.
http://codevs.cn/wiki/solution/?problem_id=1050
Soluti...
分类:
其他好文 时间:
2015-02-20 19:45:28
阅读次数:
408
http://acm.hdu.edu.cn/showproblem.php?pid=1003给出一个包含n个数字的序列{a1,a2,..,ai,..,an},-1000# define INF 1000000000int main(){ int Start, End, Sum, Max, Num, ...
分类:
其他好文 时间:
2015-02-20 18:38:19
阅读次数:
361