摘要: 将给定的N个数划分为互不相交的M个子段,并且这M个子段的和是最大的 思路 f[i][j]表示将前i个数划分成j段后的最大和,下面是决策: f[i-1][j]:将a[j]接在第j段后面 f[k][j-1]:a[j]另起一段,但因为加上只有a[j]这单独的一段后已经一共有j段了,所以需要从前f[k][j 阅读全文
posted @ 2020-10-28 15:48 童年の波鞋 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 请求出数组a的不同子序列的数量。1<=N<=100000 **思路:**允许重复的情况下的子序列的状态表示为f[i]=2*f[i-1]+1(n=1时,有一个;n=2时,有三个;n=3时,有七个...) 但怎么去除重复的统计呢?当位置a[p]==a[i]时(p<i),p前面的元素和a[i]会形成和a[ 阅读全文
posted @ 2020-10-28 11:23 童年の波鞋 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 将N分为若干个不同整数的和,有多少种不同的划分方式 **思路:**状态表示还是比较难想到的,f[i][j]表示用j个数字凑成数字i的方案数 f[i][j]+=f[i-j][j]+f[i-j][j-1],为了不重不漏 f[i-j][j]表示用j个数凑成数字i-j,第j个数字填1的方案数(j≤i) f[ 阅读全文
posted @ 2020-10-28 10:25 童年の波鞋 阅读(105) 评论(0) 推荐(0) 编辑