线段树
xiaofengsheng
这个作者很懒,什么都没留下…
展开
-
线段树2
从简单说起,线段树其实可以理解成一种特殊的二叉树。但是这种二叉树较为平衡,和静态二叉树一样,都是提前已经建立好的树形结构。针对性强,所以效率要高。这里又想到了一句题外话:动态和静态的差别。动态结构较为灵活,但是速度较慢;静态结构节省内存,速度较快。接着回到线段树上来,线段树是建立在线段的基础上,每个结点都代表了一条线段[a , b]。长度为1的线段成为元线段。非元线段都有两个子结点,左结转载 2009-03-01 12:56:00 · 674 阅读 · 0 评论 -
线段树1
线段树入门2008-01-17 13:59好久没写过算法了,添一个吧,写一个线段树的入门知识,比较大众化。上次在湖大,其中的一道题数据很强,我试了好多种优化都TLE,相信只能用线段树才能过。回来之后暗暗又学了一次线段树,想想好像是第三次学了,像网络流一样每学一次都有新的体会。把问题简化一下:在自然数,且所有的数不大于30000的范围内讨论一个问题:转载 2009-03-01 12:53:00 · 891 阅读 · 0 评论 -
我的线段树标程
#include using namespace std;#define N 100struct TNode{ int left, right; int n;};TNode T[N*2+1];void build(int s, int t, int step){ T[step].left = s; T[step].right = t; T[ste原创 2009-03-01 13:00:00 · 913 阅读 · 0 评论 -
pku 2528
#include #include using namespace std;#define MAXN 20010struct TNode{ int left, right; int n;};struct Map{ int num; //表示端点坐标 bool isLeft; //表示右端点 int id; //表示输入时的原序号 bool o原创 2009-03-02 18:32:00 · 1161 阅读 · 0 评论 -
pku 2777
#include using namespace std;#define MAX 100002#define MAXN 32struct TNode{ int left, right; int n;};TNode T[MAX*3];bool hash[MAXN];int cnt;void build(int s, int t, int step)原创 2009-03-03 15:59:00 · 1335 阅读 · 5 评论 -
pku 3277
#include #include using namespace std;#define MAX 40005struct TNode{ int left, right, height;};TNode T[MAX*10];int map[MAX][3];int temp[MAX*2];__int64 sum;int index;int find(原创 2009-03-04 11:39:00 · 871 阅读 · 0 评论 -
pku 1151
#include #include using namespace std;#define MAX 101#define INF 100001.0fstruct TNode{ int left, right; double top; double sum;};TNode T[MAX*12];double map[MAX][4];// left rig原创 2009-03-06 23:01:00 · 973 阅读 · 0 评论 -
pku 1177 Picture
#include #include using namespace std;#define MAX 5000#define INF -10001struct TNode{ int left, right; int top; int sum;};TNode T[MAX*12];int map[MAX][4];// left right bolow hi原创 2009-03-07 09:34:00 · 1143 阅读 · 0 评论