您正在查看 "Dp" 分类下的文章 2010/07/26 22:01 2010/07/20 11:05 2010/07/16 23:14 【题目地址】
http://www.vijos.cn/Problem_Show.asp?id=1218
【题目大意】
给出N个数字(环形数字),要求分为M堆,同时求出把每一堆的和加起来以后mod 10 的积最大or 最小
N <= 50, M <= 9
【解题思路】
把那N个数字扩展成2N个数字,之后枚举第一堆的"起点",然后只需要用一个简单的DP来计算最大/最小值
假设
f[i][j] 表示 前i 个数字分配成j堆的最小值
g[i][j] 表示 前i 个数字 |
2010/06/25 10:37 2010/06/24 17:59 2010/06/19 18:38 2010/06/02 22:24 【题目链接】http://61.187.179.132:8080/JudgeOnline/showproblem?problem_id=1925
【算法分析】
F[i][j][k]表示第i段,在剩余的 n - i个数字中,小于当前选择的那个数的个数是j,k代表是下一个该上升还是下降,的方案数。
然后转移就行了。
然后需要用滚动数组优化。
【时间复杂度】O(n^2)
【空间复杂度】O(n)
【CODE】
#include <cstdio |
2010/05/20 20:03 2010/04/25 20:51 2010/04/05 22:55 2010/03/21 0:28 2010/03/03 8:48 2010/03/02 16:19 2010/01/24 17:36 2009/11/12 9:59
在神牛lyg( SuperBrother)的亲切指点下终于A了几道状态DP入门题,今天又遇到了一道挺有感觉的入门题:
传送门
图论+状态DP
首先floyd预先处理,对(必须经过的m个点)建立新的图,显然新的图<=16,然后状态dp
dp[i][state_i]表示子图状态中以i结尾,状态为state_i |
| | |