
数据结构
文章平均质量分 75
carter91620
这个作者很懒,什么都没留下…
展开
-
并查集----poj解题
1182---食物链f[n]和delt[n]分别保存集合关系和父子关系,f[i]表示i的父亲是f[i],delt[i]表示i与f[i]的关系,如果delt[i]=0,表示i与f[i]同类;如果delt[i]=1,表示i吃f[i];如果delt[i]=2,表示f[i]吃i;#include #include#include#include#includeusing name原创 2012-03-04 13:17:57 · 355 阅读 · 0 评论 -
poj1656----二维线段树
二维线段树有树套树和四分法来写,表示小菜只会用树套树,而且在一维的时候lazy标记还是不太会写,,囧大了,,,#include#include#include#includeusing namespace std;#define maxn 105struct SNode{ int l,r; bool flag,color;};struct TNode{ int l,r原创 2012-04-07 11:07:22 · 1659 阅读 · 1 评论 -
poj3321---树状数组
先确定节点关系,使每个节点都用一个线段表示,begin表示起始位置,end表示结束位置在树上搜索确定。然后就是纯树状数组模板了。这道题卡vector最好不用。#include#include#include#includeusing namespace std;#define N 100005struct TNode{ int to,next;}nod[2*N];int原创 2012-04-03 20:33:50 · 1998 阅读 · 0 评论 -
poj2828---线段树
//题目大意是,有n个人按次序插队,第i个人会插在第f[i]个位置之后,当然随着第i+1....n个人的插入,第i个人的位置也会发生改变//那么我们可以从后往前插,第i个插在第f[i]位置之后,相当于第i个要在其插入的位置之前留f[i]个空位#include #include#include#includeusing namespace std;#define N 20000原创 2012-03-07 14:43:05 · 433 阅读 · 0 评论 -
POJ2777---线段树
成段更新,在节点处lazy标记有很大帮助,有了lazy标记每次更新时就不用更新到底了。#include #include#include#includeusing namespace std;#define N 100005int n,m,t,sum;char str[2];bool color[33];struct TNode{ int l,r,color原创 2012-03-06 00:24:49 · 373 阅读 · 0 评论 -
POJ3667---线段树
//对连续空间的插入和删除//snum---表示此节点下空间个数,ls---表示此节点从左开始的空间个数,rs---表示此节点从右开始空间个数//在查询时,按左节点、左节点---右节点、右节点的次序查询//在每次查询时都要向下更新;在查询成功时,要向上更新#include #include#include#includeusing namespace std;#define N原创 2012-03-06 00:32:43 · 355 阅读 · 0 评论 -
poj2528---线段树
//成段更新,不必更新到底//id记录的是节点被编号为id人的海报遮住//墙的长度很长,在建树时,应以海报贴的最右边为准,不然会MLE#include #include#include#includeusing namespace std;#define N 10005int n,m,t,sum,p;struct TNode{ int l,r,id;} n原创 2012-03-07 14:36:51 · 335 阅读 · 0 评论 -
poj3468---线段树
//线段树成段更新//和其他题相似,注意在更新时值可以超出int范围,在乘的时候,应乘1ll强制类型转换#include #include#include#includeusing namespace std;#define N 100005typedef __int64 i64;int n,m,t;i64 sum;int ans[N];char str[2];s原创 2012-03-07 14:32:18 · 384 阅读 · 0 评论 -
poj2482---线段树
//和求矩形覆盖面积相似//以每个星星为左下角建立一个W*H的矩形,把矩形的左右边离散出来,左边的线段权值为val,右边的线段权值为-val//排序后,从左到右扫描//注意在向上更新时,节点root的最大值应是2*root与2*root+1值的最大者//向下更新//注意建立矩形时,边可以超出int范围//排序时,x相等则按val从大到小排#include #include原创 2012-03-07 14:25:04 · 556 阅读 · 0 评论 -
poj2761----树状数组
简单的树状数组,复杂度是O(n+m)logn#include#include#includeusing namespace std;#define maxn 100005#define maxm 50005int cal[maxn],ans[maxn],sum[maxm],mid[maxn];int n,m;struct TNode{ int l,r,k,id;}nod[原创 2012-04-06 20:48:34 · 1739 阅读 · 0 评论