摘要:
题意:给定每个矩形的高度以及底边在数轴上的起点和终点。各矩形间可能有重叠。问它们覆盖的总面积是多少。分析:线段树的题,开始以为不能用线段树,因为如果在已经插入了许多又瘦又高的楼的情况下,插入一个又矮又宽的楼横跨他们的话,就会对中间相交部分进行许多次修改复杂度远大于O(logn)。后来看了答案才知道,可以先把楼房按照高度从小到大排序,这样就不会出现这样的情况了。后来wa的原因是建树的范围比实际范围大了1个单位。另外,跨度横坐标需要离散化。#include #include #include #include #include using namespace std;#define MAX_INT 阅读全文
摘要:
题意:给定一个数列,要求把数列切分成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 阅读全文
摘要:
又犯了同样的错误,开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, 阅读全文
摘要:
利用priority_queue模拟霍夫曼树。注意结果要用long long.View Code #include #include #include #include #include usingnamespace std;struct Integer{ longlong x; Int... 阅读全文
摘要:
利用栈进行动态规划,要注意的地方是总和得用longlong因为80000^2是超出int范围的。View Code 阅读全文