题目地址:HDU 4908
这个题是从m开始,分别往前DP和往后DP,如果比m大,就比前面+1,反之-1.这样的话,为0的点就可以与m这个数匹配成一个子串,然后左边和右边的相反数的也可以互相匹配成一个子串,然后互相的乘积最后再加上就行了。因为加入最终两边的互相匹配了,那就说明左右两边一定是偶数个,加上m就一定是奇数个,这奇数个的问题就不用担心了。
代码如下:
#include
#inclu...
分类:
其他好文 时间:
2014-08-03 23:17:46
阅读次数:
240
简单dp题,LIS。不同之处是这里要求得的不是最长的子序列,而是权重和最长的子序列。其实大同小异。
状态数组就是到达每个位置的最大权重。
LIS问题常用解法就是两个:
人人为我
我为人人...
分类:
其他好文 时间:
2014-08-03 23:16:16
阅读次数:
277
这半个多月一来,主要是在刷DP。开始是一些简单的DP(可是我没有感觉有多简单=_=!!),然后是最大连续子序列,最大公共子序列,最大子矩阵等等,这些题目还好,有的题目甚至可以模板化。还有一些没有解决的难题:1024 Max Sum Plus Plus 最大m段不重叠子段和](可不连续)1244 Ma...
分类:
其他好文 时间:
2014-08-03 23:13:46
阅读次数:
262
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For example, given the fol...
分类:
其他好文 时间:
2014-08-03 22:59:56
阅读次数:
259
题目:uva674 - Coin Change(完全背包)
题目大意:给1 5 10 25 50 这5中面值的硬币,然后给出N,问用这些钱组成N的不同方式数目。1 5 和 5 1 表示同一中,顺序不同算相同。
解题思路:完全背包。 状态方程:dp【j】 += dp【 j - v【i】】;
代码:
#include
#include
const int N = ...
分类:
其他好文 时间:
2014-08-03 20:39:55
阅读次数:
219
题目:uva10130 - SuperSale(01背包)
题目大意:超市甩卖。有n件商品,每件商品有对应的价值和重量。有一个家族准备去超市买东西,每个人最多每种甩卖商品只能买一件,可以拿很多不同的商品但是要能拿得动。给出每个人能拿得动的最大重量,问这样的一个家族取采购能够得到的最大的价值。
解题思路:01背包。 dp【j】 = Max (dp【j】, dp【j - W】 + ...
分类:
其他好文 时间:
2014-08-03 20:39:05
阅读次数:
179
题意:给你一棵树,问你树中距离为k的有多少种情况。解题思路:树形dp 维护每个节点(1-K)深度的情况,解题代码: 1 // File Name: 161d.cpp 2 // Author: darkdream 3 // Created Time: 2014年08月03日 星期日 19时20分10秒...
分类:
其他好文 时间:
2014-08-03 20:36:35
阅读次数:
201
TicketsTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 972Accepted Submission(s): 495Problem Descr...
分类:
其他好文 时间:
2014-08-03 20:28:11
阅读次数:
264
给出两个等长的字符串,每次需要改变m个数字,每次必须改变k个数字,求从第一个串变化到第二个串的方案数。DP。f[i][j]改变i步后,有j个位置被改变的方案数。然后直接枚举当前改变的几个位置是前面重合的。然后统计答案输出即可。#include #include #include #define M ...
分类:
其他好文 时间:
2014-08-03 20:26:35
阅读次数:
213
前面先用数位DP预处理,然后暴力计算组合方式即可。#include #include #include #include #include #include #include #include #include #include #include #include #include using na...
分类:
其他好文 时间:
2014-08-03 20:24:31
阅读次数:
248