2012年1月30日
摘要: POJ_1724 这个题目可以直接将SPFA中的dis[]变成二维的dis[i][k]表示到第i个点花费为k时的最短路,但如果直接做SPFA会超时,需要加一个剪枝:设mind[i]表示到第i个点的用于剪枝最短路,mink[i]表示第i个点的用于剪枝的最小花费,如果在SPFA的过程中走到了第i个点的路径长为d花费为k,那么如果d>=mind[i]&&k>=mink[i],这时就进行剪枝,如果d<mind[i]&&k<mink[i]就更新mind[i]与mink[i]的值,并将这个点(i,k)入队,其余的情况也要将(i,k)入队。 这个题目还 阅读全文
posted @ 2012-01-30 22:54 Staginner 阅读(412) 评论(0) 推荐(0) 编辑
摘要: ZOJ_1729 实际上就是要求去求给定字符串的“最小表示”。#include<stdio.h>#include<string.h>#define MAXD 200010int N;char b[MAXD];void solve(){ int i, j, k, p1, p2; scanf("%d%s", &N, b); for(i = N; i < 2 * N; i ++) b[i] = b[i - N]; p1 = 0, p2 = 1; for(;;) { for(k = 0; k < N; k ++) i... 阅读全文
posted @ 2012-01-30 00:53 Staginner 阅读(252) 评论(0) 推荐(0) 编辑