随笔分类 -  线段树

摘要:想了很久,才知道用线段树来做,实现也不算太复杂。#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define SIZE 262145struct node{ int i,left,right,sum;};node vert[SIZE<<2];int treeNode;int build(int i,int left,int right){ int mid; vert[i].left=left; vert[i].right=right; vert[i]. 阅读全文
posted @ 2012-04-18 19:13 书山有路,学海无涯 阅读(360) 评论(0) 推荐(0) 编辑
摘要:题意:给出一数组,数组首尾是可以相接的,要求求出最大连续序列值,并且不可以包括所有元素值。遇到求这种最大连续序列值,看了网上大牛的思想才知道一般分为两种情况:1、不同时包括两端点的情况,这时直接求整个序列中的最大连续序列值;2、同时包括两端点元素,这时求整个序列中的最小连续序列值,然后用总和减去它,就是所要求的值。具体怎么求法呢?假设我们将整个序列分成两个连续的序列a,b;与整个序列设成A。假如我们知道a,b序列各个的从左向右最大连续序列值lmax,从右往左的最大连续序列值rmax,和从左向右最小连续序列值lmin,从右往左的最小连续序列值rmin,和每个序列的最大连续序列值nmax和最小连续 阅读全文
posted @ 2011-10-29 19:57 书山有路,学海无涯 阅读(1071) 评论(0) 推荐(0) 编辑
摘要:平生第一道线段树,A的太艰难了,一开始就RE,以为是数组开小了,增加了之后仍然RE,看了discuss后才知道文中有一就话没看到,“here A, B, C are integers, and A may be larger than B”,原来left可以大于right,改了之后结果TLE,我可纠结的不得了。后来看到一些大牛的博客中写道要用延迟操作,结果终于弄懂了什么是延迟操作。修改之后再提交结果WA(悲哉),后来自己做了一些测试数据,却发现自己仅在涂色的时候进行了延迟操作,其实在查找的时候仍然需要,修改之后AC了。#include<iostream>#include<cs 阅读全文
posted @ 2011-09-21 20:11 书山有路,学海无涯 阅读(314) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示