上一页 1 ··· 169 170 171 172 173 174 175 176 177 ··· 182 下一页
摘要: 题意:给定每个矩形的高度以及底边在数轴上的起点和终点。各矩形间可能有重叠。问它们覆盖的总面积是多少。分析:线段树的题,开始以为不能用线段树,因为如果在已经插入了许多又瘦又高的楼的情况下,插入一个又矮又宽的楼横跨他们的话,就会对中间相交部分进行许多次修改复杂度远大于O(logn)。后来看了答案才知道,可以先把楼房按照高度从小到大排序,这样就不会出现这样的情况了。后来wa的原因是建树的范围比实际范围大了1个单位。另外,跨度横坐标需要离散化。#include #include #include #include #include using namespace std;#define MAX_INT 阅读全文
posted @ 2011-02-25 20:35 金海峰 阅读(1001) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个数列,要求把数列切分成m个段,使得总和最大的一段的总和最小。求这个总和。分析:只知道dp的方法,但是超时。后来知道是二分。就是二分查找一个阶段消费的上限(总和)。每次可以用O(n)的效率来判断这个值是不是符合。我们要找的就是符合条件的最小值。View Code #include <cstdio>#include <iostream>#include <cstdlib>#include <cstring>usingnamespace std;#define maxn 100005int n, m, f[maxn], l, r, mid 阅读全文
posted @ 2011-02-22 16:31 金海峰 阅读(1132) 评论(2) 推荐(0) 编辑
摘要: 又犯了同样的错误,开edge数组开小了,应该是maxm,开成了maxn正反两个图,进行两次dijkstra即可View Code #include <cstdio>#include <iostream>#include <cstdlib>#include <cstring>using namespace std;#define maxn 1005#define maxm 100005#define inf 1000000000struct Edge{ int v, w, next;}edge[maxm], opedge[maxm];int n, 阅读全文
posted @ 2011-02-22 15:42 金海峰 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 利用priority_queue模拟霍夫曼树。注意结果要用long long.View Code #include #include #include #include #include usingnamespace std;struct Integer{ longlong x; Int... 阅读全文
posted @ 2011-02-22 15:41 金海峰 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 利用栈进行动态规划,要注意的地方是总和得用longlong因为80000^2是超出int范围的。View Code 阅读全文
posted @ 2011-02-22 11:14 金海峰 阅读(391) 评论(0) 推荐(0) 编辑
上一页 1 ··· 169 170 171 172 173 174 175 176 177 ··· 182 下一页