2011年11月26日
摘要: UVA_10306 直接将x、y由小到大进行递推即可,对每个格子都尝试一下M个向量加法操作。#include<stdio.h>#include<string.h>#define MAXM 50#define MAXS 310#define INF 1000000000int M, S, x[MAXM], y[MAXM], f[MAXS][MAXS];void init(){ int i; scanf("%d%d", &M, &S); for(i = 0; i < M; i ++) scanf("%d%d", 阅读全文
posted @ 2011-11-26 03:37 Staginner 阅读(307) 评论(0) 推荐(0) 编辑
摘要: UVA_10739 我们用f[i][j]表示字符串从第i位到第j位构成回文串最少所需的操作数,如果b[i]==b[j],f[i][j]=f[i+1][j-1],否则f[i][j]=min{f[i][j-1],f[i+1][j],f[i+1][j-1]}+1。#include<stdio.h>#include<string.h>#define MAXD 1010#define INF 1000000000char b[MAXD];int f[MAXD][MAXD];int dp(int x, int y){ int t, min = INF; if(f[x][y] != 阅读全文
posted @ 2011-11-26 03:08 Staginner 阅读(485) 评论(0) 推荐(0) 编辑
摘要: UVA_590 根据到达时间,我们可以把图看成有K层,然后用SPFA求到各个点的最短路即可。#include<stdio.h>#include<string.h>#define INF 1000000000int N, K, G[15][15][40], T[15][15], f[15][1010];int q[11000], d[11000], inq[15][1010];int init(){ int i, j, k; scanf("%d%d", &N, &K); if(!N && !K) return 0; fo 阅读全文
posted @ 2011-11-26 01:43 Staginner 阅读(369) 评论(0) 推荐(0) 编辑