线段树学习笔记//日记
来源:互联网 发布:skype for mac 编辑:程序博客网 时间:2024/06/05 04:11
今天学了线段树0.0。什么是线段树呢。。这个我建议去看一下这个博客:http://www.cnblogs.com/TenosDoIt/p/3453089.html
线段树是一种树形数据结构,用的是分治的思想(也许!?)。可以实现线段中的求和,求点的最小值等操作。并且修改点非常方便。分为以下几个操作。
建树,查询,修改(点或区间)。下面只给了修改一个点的代码,修改区间的0.0嗯。。明天再发吧。。另外写个日记吧。。距离NOIP复赛还有不到一个月。。~哎0.0.感觉自己需要学的还有很多很多,上周做了模拟赛。哎0.0D1T1想错然后暴力少打30分。T2答案输出顺序打反暴零。。T3神奇的骗到了50分?惊了。。D2T1几乎离正解就差一步,然后不相信自己选择了暴力骗30分。。T2直接写暴力,T3完全不会做。。感觉还是做题少,然后去刷了刷普及组水题。到时候有时间把代码整理一下全发过来。。
不知道沿着这条路走,收获的是成功的喜悦还是失败后的泪水。好在班主任还是挺支持我们的,不过感觉平时除了OI生活就没有什么期盼了呢0.0咳嗯还有ly。既然选择了远方,便只顾风雨兼程嘛。。小luoyue应该相信自己才对。。算了不写了0.0..
struct xds{
#define lson (o<<1)
#define rson (o<<1|1)
int sumv[MAXN<<2]; //储存线段和
inline void pushup(int o){sumv[o]=sumv[lson]+sumv[rson];} //可以查最小值,求和等操作
inline void build(int o,int l,int r){
if(l==r){sumv[o]=a[l];return;} //a为维护数组 o树中位置 ,l==r递归到最后一层;
int mid=(l+r)>>1;
build(lson,l,mid);build(rson,mid+1,r); //建左右子树
pushup(o);
}
inline int csum(int o,int l,int r,int ql,int qr){ //o l r当前节点编号区间 ql qr询问区间
if(ql<=l&&r<=qr)return sumv[o]; //包含直接计入答案
int mid=(l+r)>>1;
int ans=0;
if(ql<=mid) ans+=csum(lson,l,mid,ql,qr); //去查找左右子树
if(mid<qr) ans+=csum(rson,mid+1,r,ql,qr);
return ans;
}
inline void change(int o,int l,int r,int q,int v){//单点修改操作
if(l==r){
sumv[o]+=v;
return;
}
int mid=(l+r)>>1;
if(q<=mid)change(lson,l,mid,q,v);
else change(rson,mid+1,r,q,v);
pushup(o);
}
};
- 线段树学习笔记//日记
- 学习笔记 线段树
- 线段树学习笔记
- 线段树学习笔记
- 学习笔记 --- 线段树
- 线段树学习笔记
- 线段树学习笔记
- 线段树学习笔记
- 线段树学习笔记01
- Algorithm学习笔记 --- 线段树
- C#学习笔记:线段树
- Algorithm学习笔记 --- 线段树单点更新
- 学习笔记:可持久化线段树
- |算法讨论|线段树2 学习笔记
- 线段树学习笔记及模板
- Oracle DBA学习日记笔记
- 【线段树】Codevs线段树练习1.2.3及线段树学习笔记
- 学习笔记——线段树算法学习
- Java锁示例
- JAVA学习笔记——Comparable 接口
- C语言学习-调用自定义函数
- 判断二维坐标系中任意一个点是否在三角形内
- Pycharm快捷键
- 线段树学习笔记//日记
- Spring核心内容IOC和DI的理解
- 【LOJ】6007 「网络流 24 题」方格取数 网络流
- 接口测试工具的分享--JMeter
- 09Python中的dictionary数据类型
- pullloadmorerecyclerview实现recycleview上拉加载,下拉刷新
- popup
- c/c++中static、auto、extern
- android:ToolBar详解(手把手教程)