-------DP相关--------
凉秋girl
保持学习应该是最难的一件事吧?
展开
-
最大正方形 DP
题意是给一个由0、1组成的矩形,问这个矩形中由0组成的最大正方形面积是多少输入样例:7 101 0 0 0 0 0 0 0 1 00 0 1 0 0 0 1 0 0 00 0 0 0 0 0 0 0 1 00 0 0 1 0 0 0 0 0 00 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 00 0 1 0 0 0 0 1 0 0原创 2017-05-11 16:25:31 · 508 阅读 · 1 评论 -
最长公共子序列<DP>
dp[i][j]表示s1序列到i个字符,s2序列到j个字符的最长公共子序列有长。for i=1 to l1 for j=1 to l2 if(s1[i]==s2[j])dp[i][j]=dp[i-1][j-1] Q1为什么不能是dp[i-1][j] dp[i][j-1]elsedp[i][j]=max(dp[i-1][j],dp[i][j-1]Q1因为原创 2017-05-04 11:47:35 · 273 阅读 · 0 评论 -
UVa 1025 <DP>
the reason of failure:1、运行错误,原来是数组开小了,找了很多次都没找对,开始让车站数量的数组变大,结果是变错了。2、判断是否该点该时列车的判断是错误的,虽然样例结果的对(一定要对输入进行判断,是否符合自己想的),刚开始f3=f2,但当第2趟列车开车为5分钟时,f3的含义应该是列车运行了的时间,所以初始应该为0,否则在第一站,f3+f2就不是列车的发车时间了。Q1原创 2017-04-27 10:20:53 · 300 阅读 · 0 评论 -
石子合并(四边形优化第一题)
满足两个性质 1、区间包含的单调性:如果对于 i≤i'<j≤j',有 w(i',j)≤w(i,j'),那么说明w具有区间包含的单调性。(可以形象理解为如果小区间包含于大区间中,那么小区间的w值不超过大区间的w值)2、四边形不等式:如果对于 i≤i'<j≤j',有 w(i,j)+w(i',j')≤w(i',j)+w(i,j'),我们称函数w满足四边形不等式。(可以形象理解为两...原创 2017-08-28 00:20:30 · 399 阅读 · 0 评论 -
poj 1741 点分治
点分治就是在树上跑分治。这个题是求树上两两距离小于K的点对有多少.可以定义length[i]为i点与根结点的距离。那么对于其不在同一个根儿子子树的点,这样可以全部计算出来了,现在就差每个子树里的点。也就是说,对于这个根,经过其的点的路径全部算出来了。此时可以把这个根从图中删掉,那么再递归进行处理后面的根,那么得到的结果即可。每次都寻找重心来进行分治,这样可以使得复杂度为 nlo原创 2017-08-29 19:44:29 · 193 阅读 · 0 评论 -
hdu2191(单调队列优化dp,多重背包)
单调队列优化这个dp可以写成这么样对于第i个物品dp[j+(k)*w(i)]=max(dp[j+k*w(i)]-k*w(i))+(k)*v[i]。k的大小为1<=k<=m[i]坑1、push_back(k)应该写在计算时候的前面2、注意滚动数组的使用 #include<bits/stdc++.h>using namespace std;...原创 2017-09-28 17:26:01 · 529 阅读 · 0 评论 -
Tyvj1305(单调队列简单应用,用list实现)
单调队列是对dp有那么一个优化。对于形如f[x]=g[x]+min或者max(t[x]|b[x]其中要求b[x]单调不下降 b[1]b[x]表示一个与f[x]/x有关的函数,g[x]表示一个与x相关的函数这么类型的用单调队列可以将计算的复杂度优化到O(N)#include #include #include #include #include #include #i原创 2017-09-27 15:27:09 · 309 阅读 · 0 评论 -
斜率dp优化两题(poj 3709 hdu 3507)
题意:给一个序列,每个序列为递增序列。每次可以把一个数字的值-1,问最少需要几次操作可以把这个序列做到每个数字至少有k个。显然dp,dp[i]表示i以及之前的全部处理的最小代价。那么dp[i]=dp[j]+sum[i]-sum[j-1]-a[j]*(i-j+1),这里j表示被选择作为值的那个下标,那么j的范围是1<=j<=(i-k+1)这里可以转换为dp[i]=sum[i]...原创 2017-10-01 16:19:08 · 191 阅读 · 0 评论