摘要: 题意: 有 N 头牛位于N个地点,知道了M 条边,这些牛现在要去 x 号牛那里聚会,问这些牛从自己的地点出发到 x 点,再回到自己的地点的所有最短路径中最长的一条,而且来的时候的路和回去的路不能相同,(因为边是单向的,肯定不同)。分析: 题意即将每头牛到 x 点的最短距离和该牛回来的最短距离相加,找出其中的最大距离。 如果以每个点为起点 ,以 x 为终点 求最短路,再加上以 x 为起点以每个牛的地点为终点的距离的话,容易超时, 可以在先求出 以 x 点为起点以各个点为终点的最小距离之后,将原图的边反转,这样以 x 为起点以其他各个点为终点的最短距离,即为以每个点为起点以 x 为终点的 的最短距 阅读全文
posted @ 2012-08-10 20:22 'wind 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题意: 给一列数对应两种操作: 1 a b v, 把[a, b] 的值改为v,即A[a] = A[a+1] = ... = A[b] = v。 2 a b, 查询[a, b] 之间的相同数的连续和最大值。分析:线段树,区间合并 + 成段更新 ... int lva[maxn<<4];// 区间最左面的值 int lnu[maxn<<4]; // 区间最左面的数的个数 int rva[maxn<<4]; // 区间最右面的值 int rnu[maxn<<4]; // 区间最右面的数的个数 int mva[maxn<<4]; // 区间最 阅读全文
posted @ 2012-08-10 11:49 'wind 阅读(240) 评论(0) 推荐(0) 编辑