随笔分类 -  动态规划——线型

摘要:也是一道线型动态规划的好题…… 读入每个人的贪婪度之后,对其按照从大到小的顺序排序,定义状态f[i][j]为前i个人(排序后)分j个饼干的答案,那么答案为f[n][m],考虑状态转移方程。 1、若给第i个人的饼干数大于1 ,那么我们将这i个人的饼干数都减1(总共减n),他们的怨气值是不会改变的,因而 阅读全文
posted @ 2019-04-06 10:22 AD_shl 阅读(376) 评论(0) 推荐(1)
摘要:显然,定义状态f[i][j][k][l]表示第一条路线走到(i,j),第二条走到(k,l)所取的数最大和。 状态转移方程即f[i][j][k][l]= max( max(f[i-1][j][k-1][l],f[i][j-1][k-1][l]), max(f[i-1][j][k][l-1],f[i][ 阅读全文
posted @ 2019-04-05 23:16 AD_shl 阅读(271) 评论(0) 推荐(0)
摘要:线型动态规划的好题…… 分析题意,不难设计出状态:f[i][x][y][z]表示完成第i个任务后,三个人分别在x,y,z位置时的花费。但是这样的状态时间与空间都无法承受,不可行。 再次考虑:当完成第i个任务后,其中一人必定在p[i]上,因此状态可以减少一维:f[i][x][y]表示完成第i个任务后, 阅读全文
posted @ 2019-04-05 23:05 AD_shl 阅读(211) 评论(0) 推荐(0)
摘要:最长公共上升子序列的模板题,仿照LCS和LIS的状态定义方式,我们定义f[i][j]表示a1~ai与b1~bj构成的以bj结尾的LCIS的长度,显然答案为max{f[n][i]}. 当ai≠bj时,f[i][j]=f[i-1][j]. 当ai=bj时,f[i][j]=max{f[i-1][k]+1} 阅读全文
posted @ 2019-04-05 20:18 AD_shl 阅读(208) 评论(0) 推荐(0)