dp
文章平均质量分 75
Weiguang_123
这个作者很懒,什么都没留下…
展开
-
poj 1579(记忆化搜索)DP
Consider a three-parameter recursive function w(a, b, c): if a if a > 20 or b > 20 or c > 20, then w(a, b, c) returns: w(20, 20, 20) if a otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(转载 2012-03-15 23:33:41 · 460 阅读 · 0 评论 -
hdu 4284(状态压缩)&& poj 3311 &&,,,
题目:给出一些城市,从1出发,旅游一圈回到1,由于花费可能不够,所以选择一些城市打工,打工之前需要花费d买一个证,工资为c。选中的城市必须去工作一次,而且只能工作一次,问能不能完成旅行。 思路:先用floyd预处理,因为h dp[pos][statue]表示在statue的情况下到pos位置的能到达最多的钱。然后枚举 (1 #include #include #include #in原创 2012-09-11 15:44:13 · 647 阅读 · 0 评论 -
poj 3311(状态压缩DP的最短路径)
题意:给一个起点和终点相同的图,一个矩阵表示各个点之间的距离,求经过所有的点,回到原点的最下路径,点可以重复走。 #include #include #include #include #define inf 100000000 using namespace std; const int N=12; const int M=1e5; int dis[N][N]; int dp[M][N原创 2012-08-26 10:17:44 · 1910 阅读 · 0 评论 -
多校第三场:hdu(4323:编辑距离算法)
题意:n个串中有多少个能在规定的步数之内变成B字符串。 解法:编辑距离+枚举 编辑距离:http://blog.sina.com.cn/s/blog_6473891f0100grx6.html 一、问题描述 设A和B是两个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括: (1)删除一个字符; (2)插入一个字符; (3原创 2012-08-01 15:36:33 · 1373 阅读 · 0 评论 -
zoj 3623(完全背包)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4769 题意描述:输入一个n和l,n代表n组值,l代表敌人的总权值,再输入n组值,每组两个数,分别代表制造这组战舰需要的时间和每秒钟可以对敌人造成伤害的权值,创建战舰可以重复创建。问需要多长时间,可以打败敌人 #include #include #includ原创 2012-08-13 10:47:54 · 967 阅读 · 0 评论 -
hdu :4359(记忆化搜索DP)
左子树的和小于右子树的和 由于都是2的幂 所以只要且必须右子树上有剩下 数中最大的那个就可以了(当然左/右为空的特殊) 查询时注意 根节点的选取是任意的 所以有假如说有n个节点 那根节点就有n种选法 还有根节点选出后 如果左右都有节点 那么剩余最大节点一定在右面 所以情况 1 左/右为空 2 左右深度同时为D-1 3 只有左/右深度为D-1 要注意时刻取模 这题会用到组合中的从原创 2012-08-10 18:37:30 · 718 阅读 · 0 评论 -
多校第一场:hdu(4301)dp
题意:把2*n的方格,分成m个部分有多少中分法。 在孟神的帮助下看懂了第一道dp,,,, 转自解题报告: 状态表示 f[i][0][j]:前i行已经出现了j部分且第i行的两个格子属于同一部分的方法数 f[i][1][j]:前i行已经出现了j部分且第i行的两个格子属于不同部分的方法数 初始条件 f[1][0][1]=f[原创 2012-07-24 00:55:35 · 905 阅读 · 0 评论 -
金华邀请赛 B题 poj 4045
昨晚没能把这题A掉,很懊悔,且不管什么树形DP,只要dfs水平过硬,这题也就变成水的了。大神们都说是比较简单但是却是比较经典的树形dp,还有用两次DFS扫描全树就行。赛后请教了孟神,才明白就是这么个样。重新打了代码,T了两次,就A了。 题意:n个点之间有n-1条边相连,形成一棵树,在这n个点上选一个点建一个发电站,要求该发电站到所有点的代价总和最小,每一个点到发电站的代价为I*I*R原创 2012-07-07 21:06:58 · 1819 阅读 · 0 评论 -
poj 2194(字符串的DP)
题意:从a、b串组合出c串,如果可以,输出“yes”,否则输出“no” 组合规则:不能乱序,只能顺序从a.b串中去字符。 DP 挺神奇的,一直想学DP ,但是怎么也想不出,真佩服能DP 的神牛们阿,,,,思维太强了。 DP[i]j]表示a的前i个和b的前j个字符组成的c的前i+j个元素,则DP[i][j]=DP[i-1][j]&&DP[i][j-1];所以a[0~i-1]必须和C[i+j-1]中原创 2012-07-05 11:16:55 · 1030 阅读 · 1 评论 -
KMP
#include #include #include using namespace std; const int N=10000; char str[N]; char sub[N]; int next[N]; int len; void getnext() { len=strlen(sub); next[0]=-1; int i,j=-1;原创 2012-10-12 09:16:14 · 453 阅读 · 0 评论