DP
xiaofengsheng
这个作者很懒,什么都没留下…
展开
-
pku 1163 Triangle
#include #include using namespace std;#define MAX 351int map[MAX][MAX];int sum[MAX][MAX];bool cmp(const int& lhs, const int& rhs){ return lhs < rhs;}int main(){ int n; scanf原创 2009-03-10 23:02:00 · 671 阅读 · 0 评论 -
pku 3356 AGTC
#include #include using namespace std;int v[1001][1001];int main(){ int m, n; string s1, s2; while(scanf("%d", &m)!=EOF) { cin >> s1; scanf("%d", &n); cin >> s2; for(in原创 2009-04-19 10:47:00 · 580 阅读 · 0 评论 -
pku 1887 Test The CATCHER
#include #include using namespace std;int map[10005];int MaxL[10005];int main(){ int cnt = 0; while(1) { scanf("%d", &map[1]); if(map[1] == -1) break; int N = 2; wh原创 2009-04-24 19:51:00 · 583 阅读 · 0 评论 -
pku 1661 Help Jimmy
#include #include #include using namespace std;struct Board{ int left, right; int height;};Board board[1005];int Left[1005], Right[1005];int n;int N, X, Y, MAX;#define INTM原创 2009-04-24 18:39:00 · 847 阅读 · 0 评论 -
pku 1695 Magazine Delivery
#include using namespace std;int dis[32][32];int dp[32][32][32];#define MAX 0x01010101//三维动态规划: 本题采用递推的方式//设我们假设某一时刻三辆车分别在i,j,k三个位置. 不妨采取递推的方式继续下去://到第k点的可能状态有:// dp[i][j][k]+dis[i原创 2009-04-24 21:43:00 · 637 阅读 · 0 评论 -
pku 3267 The Cow Lexicon
#include #include using namespace std;int v[302];char s[600][27];char word[302];int len[600];int N, L;int main(){ scanf("%d%d", &N, &L); scanf("%s", &word); for(int i = 0; i原创 2009-05-04 16:59:00 · 700 阅读 · 0 评论 -
pku 1080 Human Gene Functions
#include #include #include #include using namespace std;int map[5][5] = {{5, -1, -2, -1, -3}, {-1, 5, -3, -2, -4}, {-2, -3, 5, -2, -2}, {-1, -2, -2, 5, -1}, {-3, -4,原创 2009-05-11 09:08:00 · 643 阅读 · 0 评论 -
pku 1260 Pearls
#include #include using namespace std;#define MAX 1000000000int num[101], price[101];int dp[101];// dp[i] = min{dp[k] + (num[k+1] + ... + num[i]+10)*price[i]} (0<=k<=i-1)int main(){原创 2009-05-10 13:20:00 · 575 阅读 · 0 评论 -
pku 3176 水
#include #include #include using namespace std;int map[351][351];int dp[351][251];int main(){ int N; scanf("%d", &N); for(int i = 1; i <= N; ++i) for(int j = 1; j <= i; ++j)原创 2009-05-10 13:48:00 · 481 阅读 · 0 评论 -
pku 1159 Palindrome
#include #include #include #include #pragma warning (disable: 4996)using namespace std;char s1[5003], s2[5003];int dp[2][5003];int main(){ int len; while(scanf("%d%s", &len, &s1原创 2009-05-11 10:35:00 · 820 阅读 · 0 评论 -
题型与解法
我对本文的定位是题型. 高手请忽略.本文会随时进行必要的更新, 如果你有一些经典题目和一些经典题型, 请您一定告诉我哟~部分摘自黑书. 动态规划动态规划的两种动机:1. 利用递归的重叠子问题,进行记忆化求解,即先用递归法解决问题,再利用重叠子问题转化为动态规划.例,1)括号序列2)棋盘分割3)决斗2. 把问题看成多阶段决策过程.例,1)舞蹈原创 2010-04-14 09:08:00 · 811 阅读 · 0 评论 -
pku 1015 Jury Compromise DP
#include #include #include #include using namespace std;#define BASE 400int opt[202][22][802];int arr1[202], arr2[202];int ret[22];void findPath(int n,int m, int delta){ int i =原创 2010-05-24 18:12:00 · 693 阅读 · 1 评论 -
pku 1042 Gone Fishing dp
状态转移为:前i个钓鱼点花费时间j时,所钓鱼的最大值为s[i][j]。 #include using namespace std;int s[26][17*12];int f[26], d[26], t[26], ret[26];int n, h;void findPath(int i, int time){ if(i == 0) //此处要看我们dp时,从0开原创 2010-05-28 16:22:00 · 829 阅读 · 0 评论 -
pku 1221 单峰回文
#include #include #include #include #include using namespace std;#define N 500__int64 opt[N+1][N+1];//状态转移: f[i][j]为数i由最小元素为j的单峰回文组成.//则有: f[i][j] = f[i][j+1] + f[i-2*j][j] (i-2*j>=j原创 2010-05-30 11:06:00 · 2270 阅读 · 0 评论 -
pku 2663 3*n铺地板问题
#include using namespace std;int v[31];int n;int solve(int i){ if(i == 0) return 1; if(v[i]) return v[i]; v[i] += 3*solve(i-2); for(int k = 4; k <= i; k+=2) v[i] += 2*sol原创 2009-04-19 12:46:00 · 1431 阅读 · 1 评论 -
pku 1160 Post Office
#include #include #include using namespace std;int pos[301];int v[31][301];int cost[301][301];//状态转移方程为: // 前i个邮局控制前j个村庄的最小距离和:// v[i][j] = min{v[i-1][k]+cost[k+1][j]}(i-1 <= k <=原创 2009-04-17 23:59:00 · 957 阅读 · 0 评论 -
pku 2385 Apple Catching
#include using namespace std;int v[1001][31];int main(){ int T, W; scanf("%d%d", &T, &W); for(int t = 1; t <= T; ++t) { int temp; scanf("%d", &temp); //状态转移方程: 前t分钟移动w次可抓到的最大原创 2009-04-17 20:14:00 · 737 阅读 · 0 评论 -
pku 1157 Litte Shop Of Flowers(商店的花的最大欣赏价值)
#include #include using namespace std;#define MAXF 101#define MAXV 101int A[MAXF][MAXV];int f[MAXF][MAXV];int main(){ int F, V; scanf("%d%d", &F, &V); for(int i = 1; i <= F; ++i)原创 2009-03-13 21:01:00 · 895 阅读 · 2 评论 -
pku 1579
#include using namespace std;int w[21][21][21];/*int wg(int a, int b, int c){ if(a <= 0 || b <=0 || c<=0) return 1; else if(a> 20 || b > 20 || c > 20) return wg(20, 20, 20); else原创 2009-03-12 22:51:00 · 448 阅读 · 0 评论 -
pku 2533 最长上升子序列
#include using namespace std;#define MAX 1001int A[MAX];int L[MAX];int main(){ int n, max; scanf("%d", &n); for(int i = 1; i <= n; ++i) scanf("%d", &A[i]); //dp L[1] = 1;原创 2009-03-14 17:19:00 · 908 阅读 · 0 评论 -
pku 2181 牛儿上天
#include using namespace std;#define MAX 150001int A[MAX];int main(){ int n; int M[MAX], N[MAX]; scanf("%d", &n); for(int i = 1; i <= n; ++i) scanf("%d", &A[i]); //dp // M[原创 2009-03-15 22:19:00 · 642 阅读 · 0 评论 -
pku 2479 最大连续和的两序列 dp
#include using namespace std;int arr[50005];int opt1[50005];int temp;int opt2[50005];int main(){ int N; scanf("%d", &N); while(N--) { int n; scanf("%d", &n); for(int i =原创 2009-04-02 21:39:00 · 2286 阅读 · 0 评论 -
pku 1050 二维矩阵的最大子矩阵
#include #include using namespace std;int map[101][101];int v[101][101];int A[101][101];int Temp[101];int main(){ int N; scanf("%d", &N); for(int i = 1; i <= N; ++i) for(int j原创 2009-04-02 19:01:00 · 770 阅读 · 0 评论 -
pku 1088 滑雪
#include using namespace std;int map[100][100];int v[100][100];int m, n;int Max = -1;int x[] = {0, 0, 1, -1};int y[] = {1, -1, 0, 0};bool isOK(int i, int j){ if(i = m || j >= n)原创 2009-04-03 19:53:00 · 755 阅读 · 0 评论 -
pku 1018 Communication System dp
#include using namespace std;int v[105][1001];int Max = 1000;int main(){ int N, n, m; int wide, price; scanf("%d", &N); while(N--) { scanf("%d", &n); memset(v, 0x7f, sizeof(v原创 2009-04-02 14:06:00 · 1051 阅读 · 2 评论 -
pku 1837 01背包
#include using namespace std;int v[21]; // placeint w[21]; // weight#define BASE 6000int c[21][BASE+6000];int main(){ int C, G; scanf("%d%d", &C, &G); for(int i = 1; i <= C; ++i)原创 2009-04-05 10:30:00 · 866 阅读 · 0 评论 -
pku 1276 Cash Machine
#include using namespace std;int num[11];int v[11];int flag[100001];int main(){ int W, n; while(scanf("%d", &W) != EOF) { scanf("%d", &n); for(int i = 1; i <= n; ++i) scan原创 2009-04-05 16:25:00 · 822 阅读 · 0 评论 -
pku 3624 准背包问题
#include using namespace std;int w[3403];//weightint v[3403];//priceint c[12881];int main(){ int N, W; scanf("%d%d", &N, &W); for(int i = 1; i <= N; ++i) scanf("%d%d", &w[i], &v[原创 2009-04-05 17:05:00 · 1176 阅读 · 0 评论 -
pku 2184 Cow Exhibition
#include using namespace std;#define BASE 100050int c[200100];bool flag[200100];int main(){ int N; int i, j; int f, s; scanf("%d", &N); memset(c, 0xbf, sizeof(c)); c[BASE] =原创 2009-04-06 09:11:00 · 996 阅读 · 2 评论 -
pku 2063 investment
#include using namespace std;int value[41], interest[41];//1 000 000 * (1.1^40) ≈ 46 000 000//46 000 000/1000 = 46 000int v[46005];int main(){ int N, n; int invest, year; scanf("%d原创 2009-04-17 19:07:00 · 638 阅读 · 0 评论 -
pku 2411 Mondriaan's Dream dp 状态压缩
pku 2411 Mondriaan's Dream dp 状态压缩原创 2010-05-31 19:03:00 · 825 阅读 · 0 评论