最短路+DP(个人用的SPFA+完全背包)
做了一上午……开始想用SPFA+BFS。但是写了半天越写越乱,放弃了。
就想到了是不是可以当作背包问题(背出病了……)把鞋子可以使用的次数当作背包容量。做完全背包。
先N次SPFA把 各点的最短距离算出来,其实比较适合Floyd。(个人用vector实现伪邻接表,然后SPFA)
然后SPFA更新路径的时候,当鞋子使用次数不...
分类:
其他好文 时间:
2014-07-18 11:18:36
阅读次数:
279
题目链接:http://code.bupt.edu.cn/problem/p/417/
裸的01背包,不懂的同学可以看下本博客转载的《背包九讲》
代码:
#include
#include
#include
#include
#define N 11111
using namespace std;
int a[N];
long long b[N];
long long dp[N];
...
分类:
其他好文 时间:
2014-07-18 11:13:19
阅读次数:
137
题目链接:http://code.bupt.edu.cn/problem/p/426/
题意应该很好懂,只能是成波浪形的数,我们假设g[N]代表的事N个数的时候,第一个数比第二个数大的波浪形数(形如“ ∨∨∨∨”)的个数。由于在此种情况下,符合“∧∧∧∧”和“ ∨∨∨∨”这样的数目应该是相等的,所以我们首先算出g[n]之后再乘2,就OK了,
有了g[N],我们还可以得到如下dp方程:g[i]=...
分类:
其他好文 时间:
2014-07-18 11:08:21
阅读次数:
137
子序列就是子序列中的元素是母序列的子集,且子序列中元素的相对顺序和母序列相同。题目要求便是寻找两个字符串的最长公共子序列。dp[i][j]表示字符串s1左i个字符和s2左j个字符的公共子序列的最大长度。注意s1第i个字符为s1[i-1]于是有递推公式:对于abcfbc和abfcab两个字符串,求公共...
分类:
其他好文 时间:
2014-07-18 10:23:55
阅读次数:
272
极大团。即求一个最大点集,使得点集中的任意两个点u,v至少存在u->v,或者v->u的路径。是这样做的,求出所有的联通分量,然后整个图就变成了无环图,把原来若干个点缩点,点权为分量的点数。这样相当于找一条权值最大的路径,因为无环了,所以这个可以通过先拓扑排序然后dp解决。这里重点说一下自己遇到的坑吧...
分类:
其他好文 时间:
2014-07-18 10:17:14
阅读次数:
250
Common SubsequenceTime Limit:1000MSMemory Limit:10000KTotal Submissions:37551Accepted:15023DescriptionA subsequence of a given sequence is the given s...
分类:
其他好文 时间:
2014-07-18 10:02:42
阅读次数:
169
DP简单题,以前用for循环写过,这次用状态递归写。感觉确实思路比以往清晰许多。 1 #include 2 #include 3 const int maxm=500+5,maxn=1000+5; 4 int d[maxm][maxn],a[maxm][maxn],n; 5 int trimax(i...
分类:
其他好文 时间:
2014-07-18 09:32:42
阅读次数:
155
01背包,DP简答题就行,要用滚动数组,不然内存要爆。for循环的方向很重要,虽然是简单题,但对理解DP帮助很大,听队长说要把每一个状态写出来,我试着写了一下,果然更容易理解了。 1 #include 2 #include 3 #define doumax(a,b) (a>b?a:b) 4 cons...
分类:
其他好文 时间:
2014-07-18 09:23:32
阅读次数:
181
题目链接:点击打开链接
给定n*m 的矩阵 常数k
下面一个n*m的矩阵,每个位置由 0-9的一个整数表示
问:
从最后一行开始向上走到第一行使得路径上的和 % (k+1) == 0
每个格子只能向↖或↗走一步
求:最大的路径和
最后一行的哪个位置作为起点
从下到上的路径
思路:
简单dp
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2014-07-17 20:15:08
阅读次数:
283
Trie+DP
大白书上的字典树训练题。
题意是说一个字符串可能有多少种小串组成。
例如
abcd
4
a
b
cd
ab
abcd=a+b+cd;abcd=ab+cd;
递推为:从最后一位往前,dp[i]=dp[i]+dp[i+ len[x]] x为输入时的顺序,附加到节点中。是 i~strlen(S)的前缀。S[1,2,3,…,i,…len]
...
分类:
其他好文 时间:
2014-07-17 19:26:33
阅读次数:
277