IT民工
加油!
摘要: http://poj.org/problem?id=3230 同样是一道DP的题,但是这道题确实想了很久,还是在staginner大牛的提醒下才想出来的,题目给的数据有ex[i][j]从i到j城市的花费,inc[i][j]为第i天在j城市的收入。状态转移方程为:f[i][j] =max( f[i-1][k] + inc[i][j] – ex[k][j] ). 其中f[i][j]代表的是第i天呆在j城所获到的最大收入。再遍历一遍求的的f值就知道m天呆在哪个城市的收入最大了!/*Problem: 3230 User: CSU_ACM1174Memory: 304K Time: 16MSLan... 阅读全文
posted @ 2012-04-02 18:22 找回失去的 阅读(455) 评论(1) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1160 这是一道DP的题,用w[i][j]代表用一个邮局覆盖第i个到第j个点所得到的最小距离和。用f[i][j]代表用前i个邮局覆盖前j个点所得到的最小距离和。然后根据这里我们可以推出状态转移方程为:f[i][j] = min( f[i][j ] , f[i - 1][k] + w[k + 1][j] ) ( k < j)./*Accepted 528K 79MS C++ 1195B 2012-08-07 14:23:15*/#include<stdio.h>#include<string.h>#includ. 阅读全文
posted @ 2012-04-02 18:12 找回失去的 阅读(174) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3259 题意大致是N个点,M条正常的边(双向)边权为正,W个虫洞,边权为负,想要我们判断回路中是否存在一个负圈。学习了bellman-ford算法来求负环,松弛结束后判断是否存在最短路,不存在则有负环。#include <stdio.h>#include <string.h>#include <stdlib.h>const int maxn = 1 << 9, inf = 0x3f3f3f3f;int dist[maxn];int N, M, W, es;struct Edge{ int u, 阅读全文
posted @ 2012-04-02 10:58 找回失去的 阅读(216) 评论(0) 推荐(1) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1874 这是一道基础的最短路的题,回顾了dijkstra算法,但是看题的时候有点不仔细,没注意到题目说的a, b之间可能有多条路,所以初始化出了点小问题,导致WA。#include<cstdio>#include<cstring>#include<cstdlib>const int MAXN = 205;const int INF = 0x3f3f3f3f;int d[MAXN], w[MAXN][MAXN];bool vis[MAXN];int n, M, a, b, x 阅读全文
posted @ 2012-04-02 10:01 找回失去的 阅读(122) 评论(0) 推荐(0) 编辑