摘要: 题意:给出若干个矩形的上下边,如定义的边界,求大于这个边界 且 长和宽递增的最长矩阵序列 并 输出分析:对宽排序 , 对长进行DP 最长上升子序列 处理#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define re(i,n) for(int i=0;i<n;i++)const int maxn = 100100;int dp[maxn];int pre[maxn];struct Pan { int 阅读全文
posted @ 2012-07-02 23:43 lenohoo 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 题意:在一个城市里,分布着若干条地铁线路,每条地铁线路有若干个站点,所有地铁的速度均为40km/h。现在知道了出发地和终点的坐标,以及这些地铁线路每个 站点的坐标,你的步行速度为10km/h,且你到了地铁的任意一个站之后就刚好有地铁出发。问你从出发点到终点最少需要多少时间。分析:按“车能开的地方坐车,车不能开的地方走路”的想法建一个图,结果就是求最短路,因为数据范围很小,所以用floyd算法,没有使用较复杂的单源最短路算法View Code #include <cstdio>#include <cstring>#include <iostream>#incl 阅读全文
posted @ 2012-07-02 13:05 lenohoo 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个城市,m条连接两个城市的道路(双向边),每条道路有自己的最大复载量。现在问从城市a到城市b,车上的最大载重能为多少。即求从a到b的路径中权值最小边的最大值分析:贪心的思想,我们每次找 道路载重量最大的路加入集合中,其思想于最短路思想基本上是一样的,所以用最短路的思想解题,dist值改为路径上最大上限(相当于最大流,这里用最短路来解)View Code #include <cstdio>#include <cstring>#include <iostream>#include <string>#include <map>us 阅读全文
posted @ 2012-07-02 04:41 lenohoo 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个*n的有向图,其中第i行第j列元素表示i—>j的最短路,求途中最少有几条边?分析: 假设一开始是个完全图,就有n*(n-1)条边,然后考虑的时候再删除重边; 如果出现i—>k +k—>j < i—>j 的情况,因为是最短路所以出错,输出"impossible"; 不然,如果存在 i—>k +k—>j == i—>j , 那么直接的边 i —> j 就可以删去,原图中就少了一个点View Code #include <cstdio>#include <cstring>#include 阅读全文
posted @ 2012-07-02 03:03 lenohoo 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题意:有k头牛n个农场面条有向边(拓扑有序,不存在环),告诉你所有奶牛的初始位置,求所有奶牛能够到达的公共点。记录每头奶牛能够到达的位子,最后判断一下就可以了。View Code #include <cstdio>#include <cstring>#include <iostream>using namespace std;#define re(i,n) for(int i=0;i<n;i++)#define re1(i,n) for(int i=1;i<=n;i++)const int maxn = 1010 , maxm = 10010;i 阅读全文
posted @ 2012-07-02 02:47 lenohoo 阅读(125) 评论(0) 推荐(0) 编辑