这是一篇被放弃的博客。。不要看了。。(新手千万不要手撸模板)
来源:互联网 发布:崇州淘宝美工招聘信息 编辑:程序博客网 时间:2024/04/25 18:57
今天解除了一下线段树 据自己理解手撸了发建树与查询的操作 的模板
#include <iostream>#include <string>#include <string.h>#include <algorithm>#include <math.h>#include <stdio.h>#include <vector>#include <time.h>using namespace std;#define LL long long int int a[1010101];struct node{ int value ; int right , left;}tree[4040404];int firstbuild(int o,int l,int r)//从第O个节点 开始建树 不断递归 知道最后到叶子节点{ tree[o].left = l; tree[o].right = r; tree[o].value = 0; if(l==r) { tree[o].value = a[l]; return tree[o].value ; } int mid = (l+r) >> 1; tree[o].value=firstbuild(o * 2,l,mid)+firstbuild(o*2+1,mid+1,r); return tree[o].value;}int query(int o,int &l,int &r){ //printf("%d--->%d %d\n",o,tree[o].left,tree[o].right); int sum=0; //首先判断是不是属于所要查询的区间 if(l<=tree[o].left&&tree[o].right<=r) //如果该区间属于要查询的区间内 就加上 而且不向下递归了 最终的加和一定是这些区间的和 而且不会重复 不会 sum += tree[o].value; else if(tree[o].right<l||r<tree[o].left) ; //如果区间有重合部分但又不包含 就要继续递归子节点 寻找区间。。 else if(tree[o].left<l||r<tree[o].right) //区间过大了 就递归缩小区间 sum += query(o*2,l,r) + query(o*2+1,l,r); else ; //区间完全不重合 就没有在向下查询的必要了 return sum;}int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } firstbuild(1,1,n); for(int i=1;i<=n*2-1;i++) printf("%d %d\n",tree[i].left,tree[i].right); puts(""); int nu=0,un=1; for(int i=1;i<=n*2-1;i++) { if(nu>=un) { nu=0,un*=2; puts(""); } nu++; printf("%d ",tree[i].value); } puts(""); while(true) { int l,r; cin>>l>>r; if(l==0||r==0) break; printf("%d\n",query(1,l,r)); } return 0;}
0 0
- 这是一篇被放弃的博客。。不要看了。。(新手千万不要手撸模板)
- 强烈推荐大家在工作累了看,女的看了不要生气(当然这是给广大IT人士看的)
- 放弃了就不要可惜
- 粘上去的博客不要去看
- 绝对经典:老婆的日记千万不要乱看!!!切记。
- AOP和动态代理的理解 整理所为复习 新手就不要看了【微笑】
- 不要放弃
- 千万不要看—思路火花
- ubuntu添加路径的时候千万不要搞成覆盖了
- 不要放弃你的梦想
- 不要放弃你的梦想
- 不要放弃你的梦想
- 不要放弃你的梦想
- 不要放弃你的梦想
- 不要放弃你的梦想
- 不要放弃你的梦想
- 不要放弃你的梦想
- 不要放弃自己的向往
- Repository模式中,Update总是失败及其解析
- 约瑟夫问题
- ShareSDK使用
- 41个Web开发者必须收藏的JavaScript实用技巧
- 对销毁对话框的分析
- 这是一篇被放弃的博客。。不要看了。。(新手千万不要手撸模板)
- maven学习笔记(1)
- Ubuntu 挂起(睡眠)后wifi断开的解决办法
- thinkphp 3.2.3在nginx+php下的url重写配置经验
- 本韵抑菌本色竹纤维纸巾
- 20160805 笔记之报表配置
- java中调用存储过程
- 通过 Bitmap Font Generator 生成 fnt 与 png 文件供 cocos2d-x 中 LabelBMFont 使用达到以图片表现数字
- iOS开发中设置UITextField的占位文…