IT民工
加油!
摘要: #include<cstdio>#include<cstring>#include<cstdlib>#define MAXN 5005#define max(a, b) ( a > b ? a : b)short f[MAXN][MAXN], len;char a[MAXN], b[MAXN];void rev(){ for( int i = len, j = 1; i >= 1; i --, j ++) { b[j] = a[i]; }}void dp(){ memset( f, 0, sizeof f); for( int i = 1; i 阅读全文
posted @ 2012-04-11 12:43 找回失去的 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 求文本的最长公共子序列,序列中每个元素都是一个字符串,学习了记录路径和递归输出的方法。/*Accepted 224K 0MS C++ 1186B 2012-04-11 11:19:14 */#include<cstdio>#include<cstring>#include<cstdlib>#define MAXN 105#define MAXM 31int f[MAXN][MAXN];char a[MAXN][MAXM], b[MAXN][MAXM];int mark[MAXN][MAXN];int na, nb, cnt;void output( int 阅读全文
posted @ 2012-04-11 11:24 找回失去的 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 求最长公共子序列,题目居然没有给出字符串最大长度。/*Accepted 428K 0MS C++ 570B 2012-04-11 10:26:03 */#include<cstdlib>#include<cstring>#include<cstdio>#define MAXN 1 << 8#define max(a, b) ( a > b ? a : b)char X[MAXN], Y[MAXN];int f[MAXN][MAXN];int x, y;void dp(){ memset( f, 0, sizeof f); x = strle 阅读全文
posted @ 2012-04-11 10:29 找回失去的 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 简单的数塔,用记忆化搜索或者递推都可以。/*Accepted 260K 16MS C++ 601B 2012-04-11 10:12:15 */#include<cstring>#include<cstdlib>#include<cstdio>#define MAXN 105#define max(a, b) ( a > b ? a : b)int d[MAXN][MAXN], a[MAXN][MAXN];int n;void init(){ for( int i = 1; i <= n; i ++) for( int j = 1; j < 阅读全文
posted @ 2012-04-11 10:14 找回失去的 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 这是一道要打表的递推题。注意数组开得足够大就行。#include<cstdio>#include<cstring>#include<cstdlib>bool vis[4000000] = {false};//记录一个数是否出现在结果中int a[500005];void init(){ a[0] = 0; for( int i = 1; i <= 500000; i ++) { if( a[i - 1] - i > 0 && !vis[ a[i - 1] - i]) a[i] = a[i - 1] - i; else ... 阅读全文
posted @ 2012-04-11 10:02 找回失去的 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 很基础的一个记忆化搜索,但是还是出了点小问题,数组只开到了25.但是我居然想记忆50的值,所以判断返回要从第三种情况开始,前面两种直接返回给定的值。/* Accepted 236K 0MS C++ 717B 2012-04-11 09:39:09 */#include<cstdio>#include<cstring>#include<cstdlib>int w[25][25][25];int dfs( int a, int b, int c){ if( a <= 0 || b <= 0 || c <= 0) return 1; if( a 阅读全文
posted @ 2012-04-11 09:44 找回失去的 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 这是一道求最大子矩阵和的题,之前做过求最大一维数列连续和,所以可以将每列压缩到一列,将二维变成一维,这样枚举所有的情况,找到一个一维最大连续和即可。/* Accepted 216K 32MS C++ 775B 2012-04-11 09:05:12 */#include<cstdio>#include<cstring>#include<cstdlib>#define MAXN 105#define max(a, b) ( a > b ? a : b)const int inf = 0x3f3f3f3f;int t[MAXN][MAXN], a[MAXN 阅读全文
posted @ 2012-04-11 09:13 找回失去的 阅读(158) 评论(0) 推荐(1) 编辑