2012年4月23日

COJ 1106 幻想乡的路

摘要: 题意:若第二小生成树代价与最小生成树代价相等输出Not Unique!,否则输出最小代价;对最小生成树的每一边标记后重新计算不含这条边的最小生成树,若代价与 MST 的相等说明有多种方案,复杂度为O(N^3)。# include <stdio.h># include <string.h># define N 20005typedef struct{ int u, v, w;} Road;char f[N], use[N];int n, m, p[205];Road r[N];int cmp(const void *x, const void *y){ return (* 阅读全文

posted @ 2012-04-23 18:03 getgoing 阅读(265) 评论(2) 推荐(0) 编辑

COJ 1082 Farmer John’s Cow

摘要: 本来想水过的,结果提交了2次都是WA,就沉下心了;类似fib数列,写出几项,可以猜测递推公式为f[n] = f[n-1] + 2×f[n-2],稍加分析:正确;稍作变形有:1. f[n] + f[n-1] = 2×(f[n-1] + f[n-2])2. f[n] - 2×f[n-1] = -(f[n-1] - 2×f[n-2])所以可以求出 f[n],这里使用第一个式子得到了f[n] + f[n-1] = 2^(n-1),所以 f[n] = 2^(n-1) - f[n-1],2的幂可以使用移位,没问题吧;题目中0<n<65,所以这样做会遇到2 阅读全文

posted @ 2012-04-23 16:24 getgoing 阅读(226) 评论(2) 推荐(0) 编辑

COJ 1196 Staginner 去爬山

摘要: ……;给出可以走的位置,问最多能爬多少层,使用dp,这道题有点不同的是还可以往下走,而常见的大都是递推,需要多加一个条件,谢谢Staginner大牛的指点!dfs可能会超时(深度太大)?为什么使用C++提交而不是C?在COJ上遭遇过使用C比C++耗时超出3s的经历(时限是5s)。# include <stdio.h># include <string.h># define N 105 char map[N][N];int n, m, f[N][N]; int dp(int i, int j); int main(){ int i, j, h; while (~scanf 阅读全文

posted @ 2012-04-23 16:11 getgoing 阅读(415) 评论(2) 推荐(1) 编辑

导航