题目大意:
求出给的n个串中。
精确到只有一个字符不同,两个字符不同,三个字符不同,四个字符不同的对数。
思路分析:
枚举状态。
dp[i] [j] ...表示当前串取出 i 状态下的所有字符转化成十进制数为 j 的出现的次数。
这样的话,就记录了所有串的子串的状态。
然后计数就得到了所有的状态。
然后我们要得到精确不同的,可以用补集的思想,如果要精确到三个不相同,意味着要...
分类:
其他好文 时间:
2014-08-04 21:33:48
阅读次数:
262
状态压缩DPdp[i][j]表示在i状态(用二进制表示城市有没有经过)时最后到达j城市的最小时间转移方程dp[i][j]=min(dp[i][k]+d[k][j],dp[i][j]) d[k][j]是k城市到j城市的最短距离 要先用flody处理#includeusing namespace std...
分类:
其他好文 时间:
2014-08-04 21:14:48
阅读次数:
263
You Are the OneTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1585Accepted Submission(s): 756Prob...
分类:
其他好文 时间:
2014-08-04 21:00:48
阅读次数:
242
题目意思和POJ2342一样,只是多加了一个条件,如果最大方案数唯一,输出Yes,不唯一输出No
dp的是时候多加一个变量记录答案是否唯一即可
#include "stdio.h"
#include "string.h"
#include "vector"
using namespace std;
struct node
{
int fa;
vectorchi...
分类:
其他好文 时间:
2014-08-04 18:02:17
阅读次数:
250
今天听了老师讲的最长公共子序列,就拿以前做过的题又做了一遍。。。
我用的是最简单普通的方法,
代码:
#include
#include
#include
using namespace std;
int dp[1005][1005];
int main()
{
char a[1005], b[1005];
int t;
scanf("%d", &t);
while(t --){
...
分类:
其他好文 时间:
2014-08-04 17:59:47
阅读次数:
186
题目:人生有很多选择,现在给你一些选择(0~n-1),和每个选择分支后面的其他选择序号,求选择总数。
分析:dp,图论。如果某状态的后续选择个数是0个则,代表死亡,统计所有到达死亡的路径条数即可。
用一个状态数组记录到达每个选择的路径数,它等于能到达它的前驱节点的路径加和。
稀疏图,使用邻接表储存。初始是节点0的路径条数为1,代表出生。
说明...
分类:
其他好文 时间:
2014-08-04 17:53:57
阅读次数:
199
Common Subsequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 23279 Accepted Submission(s): 10242
Problem Description
A sub...
分类:
其他好文 时间:
2014-08-04 17:52:18
阅读次数:
239
题目链接:点击打开链接
编辑距离,,== 一边dp一边记录前驱太累,,还是dp后找路径大法好
#include
#include
#include
#include
using namespace std;
#define ll int
#define N 1010
char s[N], t[N];
int dp[N][N], n, m;
// 0为插入 1为删除 2 3为替换
struct ...
分类:
其他好文 时间:
2014-08-04 17:49:47
阅读次数:
275
给出N个点,N-1个关系,建出树形图,问最少减去几个边能得到节点数为P的树。典型树形DP题
dp[cur][j] :记录cur结点,要得到一棵j个节点的子树去掉的最少边数
转移方程用的背包的思想
对当前树的每一个子树进行计算
砍掉此子树: dp[cur][j]=dp[cur][j]+1;
不砍掉: for (l=0;l
#include "std...
分类:
其他好文 时间:
2014-08-04 17:49:17
阅读次数:
181