摘要: 首先考虑,若分解成k段,则n的值至少为1+2+3+4+...+k=(k+1)*k/2所以本题k的最大值为315假定dp[k][n]表示为可以分成k段和为n的方案数,情况分为两种:1、只有一个1的,则等于dp[k-1][n-k],相当与从n里拿走k个1,可以分成k-1段的方案数2、没有1的,则等于dp[k][n-k],相当于从n里拿走k个1,可以分成k段的方案数所以 dp[k][n]=dp[k-1][n-k]+dp[k][n-k]#include<iostream>#include<cstdio>#include<algorithm>#include<c 阅读全文
posted @ 2013-05-08 15:35 小仪在努力~ 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 考虑对于某行某列元素,row[i][j]表示加上位置为i,j的土豆的质量的i行j列最大的和列的最大值:row[i][j]=max(row[i][j-2]+row[i][j-3])+val看图说话:假设红色的格子为i行j列,那么它的前面有两种选择方案:1、选择蓝色格子2、选择黄色格子那么该行最大的和是什么呢?由于n列、n-1列具有状态无关性(n-1列的状态影响不了n列的状态),很显然等于max(row[i][n],row[i][n-1])同理对于dp[i] (i行的最大值)dp[i]=max(dp[i-2],dp[i-3])+max_row[i]看图说话:max土豆质量=max(dp[m],dp 阅读全文
posted @ 2013-05-08 10:08 小仪在努力~ 阅读(415) 评论(0) 推荐(0) 编辑