动态规划
文章平均质量分 85
wujy47
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UVaLive/LA 6806 Hari Merdeka(AC自动机,DP)
// Author: Yuan Zhu #include #include #include #include #define maxn 20010 #define ll long long using namespace std; int t; int N, M, B; int v[30], c[210]; int next[maxn][26], fail[maxn]; int L,原创 2014-11-23 21:26:28 · 1230 阅读 · 0 评论 -
UVaLive/LA 6800 The Mountain of Gold?(BellmanFord判负环+记忆化搜索)
题目大意: 给定一张有向图,问能否从0号点出发,回到0号点,经过的路径上边权之和小于0。若可能,输出“possible”,否则输出“not possible”。 解题思路: Bellman Ford算法不但可以计算单源最短路径,还可以应用于判断:从源点出发,是否能够到达一个负环。 应用于本题,因为只要从0出发,能够到达一个负环,并且还能走回的话,就能实现要求(负环外的边权不用考虑,在负环内多走几圈,肯定能使总边权小于0)。所以用Bellman Ford找出所有从0出发能到达的负环,再用记忆化搜索的方法,判断原创 2014-11-23 20:41:31 · 1389 阅读 · 0 评论 -
UVaLive/LA 6801 Sequence(DP)
题目大意: 给定n个开关(0/1)的初始状态,执行k次操作,每次可以任意选择一个,将其状态反转(0-1, 1-0)。问使得最终状态全是0的方法数%1000000007。 解题思路: 动态规划。用dp[i][j]表示第i次操作后,还有j个1的方案数。 状态转移方程: dp[i][j+1] = dp[i-1][j] * (n-j) dp[i][j-1] = dp[i-1][j] * j原创 2014-11-23 20:53:40 · 993 阅读 · 0 评论 -
UVa 10559 Blocks(DP)
题目大意: 方块消除游戏,给你一个n个方块的序列,相同颜色的一段同时消掉,得分为 len^2,问最高得分。 解题思路: 这题是比较经典的动态规划题。当前决策会对未来决策的花费产生影响,自己不太容易想到,根据黑书和论文(http://wenku.baidu.com/view/83d0a76925c52cc58bd6bea8.html),可以每次决策时,预先计算未来可能的花费,这样以后决策时可以直接转移使用。dp[l][r][k]表示将[l,r]区间连同之后的长度为k的一起消除的最大得分。 两种决策如图所示:原创 2014-11-13 11:39:46 · 1722 阅读 · 0 评论 -
UVa 10626 Buying Coke(DP)
题目大意: 去买可乐,一瓶可乐8元。有1元、5元和10元三种货币,初始分别拥有数量给定。自动售货机会用最少的硬币数量找零。找零的钱可以继续使用。问最少向售货机中投入多少枚硬币,能买到C瓶可乐。 解题思路: 货币数量较少,状态不多。只有付10*1找1*2(投入1枚)、付5*1+1*3找0(投入4枚)、付10*1+1*3找5*1(投入4枚)、付1*8找0(投入8枚)这四种情况,可以想到其他的方法,投入的硬币数量肯定更多,所以不用考虑。 动态规划。只需记录三种面值的数量所为状态即可。用dp[n1][n5][n1原创 2014-11-20 10:11:32 · 3645 阅读 · 0 评论 -
UVa 10688 The Poor Giant(区间DP)
题目大意: 有n个苹果,和一个数k,第i个苹果的重量是k+i(1<=i<=n). 已知其中只有一个苹果是甜的,所有比它重量轻的都是苦的,比它重的都是酸的。为了要找出甜的苹果,就要去一个一个地吃它,且吃了咬了苹果就必须把它吃完,不管苹果是苦的还是酸的。 (题目描述有误) 例如,先吃#1, 如果#1是甜的,花费1 如果#2是甜的,那么选择吃#3,不管#3是什么味道,都可以推测出#2和#4的味道,那么花费1+3 如果#3是甜的,第二次选择吃#3, 共花费1+3 = 4 如果#5是甜的,方案和上面一样, 共花费1原创 2014-11-13 11:49:43 · 996 阅读 · 0 评论 -
UVa 10593 Kites(DP)
题目大意: 给定一张纸,纸上一些未知有洞,要求剪出一些风筝(正方形或菱形),问一共有多少种剪法。 解题思路: 动态规划。正方形和菱形分开考虑。 用dp[i][j] 表示以(i, j)点为正方形的右下角点(菱形的最右边的点)时,图形的尺寸。如下图所示,按图2上的顺序遍历) 状态转移方程: 正方形:dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1; ((i, j)、(i-1, j-1)、(i-1, j)、(i, j-1) 都为x)原创 2014-11-13 11:47:21 · 1136 阅读 · 0 评论 -
UVa 607 Scheduling Lectures(DP, 贪心)
题目大意: 教授一门课程,每次讲座时长为L,共有n个知识点需要讲授,每个知识点需要花费 t[i] 的时间。要求一个知识点不能拆开到两次讲座中,且必须按顺序讲授。问怎样安排知识点,使得总的讲座数最少,同时让不满意度最低。不满意度有每次讲座提前结束的时间决定,服从题目中的DI函数。 解题思路: 对于总讲座数最少的问题,因为知识点必须按顺序讲授,很容易想到用贪心的方法,每次讲座尽可能填满,安排不下只能新开一次讲座。 对于不满意度最低的问题,用DP解决, dp[i][j]表示用i次讲座容纳前j个知识点的最低不满意度原创 2014-11-13 11:48:27 · 851 阅读 · 0 评论 -
HDU 5092 Seam Carving(DP, 路径)
题目大意:给定一个N∗M的矩阵,每次可以向下面三个方向移动,现在要求走过的路径上的值最小,并且尽量靠右。输出值和路径。 解题思路:dp[i][j]表示移动到第i层j的位置的最优解,r[i][j]则对应记录的是从上一层的哪一个位置到来。水题,只是坑题意。原创 2014-11-11 20:43:35 · 1041 阅读 · 0 评论 -
Codeforces 478D Red-Green Towers (DP)
### 题目大意 用r块红色、g块绿色的方块,搭成一个h层(尽可能高)的塔,第i层有i个相同颜色的方块。 问所有可行的方案有多少。 ### 解题思路 动态规划 dp(h, r) 表示到h层,已用r块红色的方案数 绿色个数可以通过h,r确定。 dp(h, r) = dp(h-1, r-h) + dp(h-1, r) 明显可以滚动压缩,dp只与之前一次相关,r反向循环避免引用修改过的数据。 dp[r] +原创 2015-03-09 12:14:50 · 1442 阅读 · 0 评论
分享