hud 1556 线段树
来源:互联网 发布:电商美工工资待遇 编辑:程序博客网 时间:2024/04/26 09:15
//hdu1556#include <stdio.h>#include <string.h>/*利用线段树解决每次更新区间的值,计算结果时加入到子区间*/int bTree[100000*3+10];int n, k;//begin-end表示node节点所代表的区间,from-to代表目标区间//将结果存在父节点中输出时将父节点的值加到子节点中void update(int begin, int end, int from, int to, int node){ if(begin==from && end==to) { bTree[node] ++; return; } int mid = (begin+end)/2; if(from > mid) update(mid+1, end, from, to, node*2+1); else if(to <= mid) update(begin, mid, from, to, node*2); else { update(begin, mid, from, mid, node*2); update(mid+1, end, mid+1, to, node*2+1); }}//即树的遍历,输出叶子节点的值void show(int begin, int end, int val, int node){ if(begin == end) { if(++k!=n) printf("%d ", bTree[node]+val); else printf("%d", bTree[node]+val); return; } show(begin, (begin+end)/2, val+bTree[node], node*2); show((begin+end)/2+1, end, val+bTree[node], node*2+1);}int main(){ while(scanf("%d", &n) && n) { int a, b; k=0; memset(bTree, 0, sizeof(bTree)); for(int i=0; i<n; i++) { scanf("%d %d", &a, &b); update(1, n, a, b, 1); } show(1, n, 0, 1); printf("\n"); } return 0;}
0 0
- hud 1556 线段树
- HUD-3308 LCIS 线段树
- hud 4614 线段树+二分
- HUD 1828 Picture 矩形周长/线段树
- Hud 敌兵布阵 --线段树的插点问线
- Billboard+hud+线段树单点更新
- hud-1754-I Hate It(线段树)
- HUD-3308 LCIS 线段树(区间合并)
- HUD-4419 Colourful Rectangle 线段树+扫描线+离散
- hud 1754 I Hate It 线段树 点修改
- hud 1255 覆盖的面积(线段树+离散化)
- HUD 1166 敌兵布阵 (线段树, 单点修改)
- hud-1556
- hud 4718 The LCIS on the Tree(树链剖分+线段树区间合并)
- HUD 1255——覆盖的面积(线段树+面积并多次+离散化)
- HUD 3911 Black And White 线段树 区间更新 + 区间合并
- hud 2795 Billboard || HDOJ 2009 Summer Exercise(5) || 线段树
- HUD 5323 Solve this interesting problem dfs剪枝搜索,重构线段树
- 按层打印二叉树 牛客网
- LoRaWAN协议解析 第5章 MAC命令
- Python--jieba分词
- 护眼色
- python中使用lxml与cssselect爬取电子书及链接
- hud 1556 线段树
- win10 pip安装tensorflow 失败
- javaScript初级逻辑运算或且真假命题
- C++学习之路-开篇
- Genymotion上不能安装APK软件的问题
- 游戏机厅的手舞足蹈跳舞机和E舞成名跳舞机多少钱一台?
- C语言基本数据类型
- 约瑟夫环问题
- Linux下的pure-ftp的安装详解