Color the ball HDU - 1556 (线段树)
思路:线段树,区间更新
1 #include<iostream> 2 #include<vector> 3 #include<string> 4 #include<cmath> 5 #include<set> 6 #include<algorithm> 7 #include<cstdio> 8 #include<map> 9 #include<cstring> 10 #include<list> 11 12 #define MAXSIZE 100010 13 14 using namespace std; 15 16 int tree[MAXSIZE*4]; 17 int lz[MAXSIZE*4]; 18 int N; 19 int cnt = 0; // 控制输出的打印格式 20 21 22 void init() 23 { 24 memset(tree, 0, sizeof(tree)); 25 memset(lz, 0, sizeof(lz)); 26 } 27 28 29 void build(int node, int l, int r) 30 { 31 if(l == r) 32 { 33 tree[node] = 0; 34 return; 35 } 36 int mid = (l+r)/2; 37 build(node*2, l, mid); 38 build(node*2+1, mid+1, r); 39 40 tree[node] = tree[node*2] + tree[node*2+1]; 41 } 42 43 44 void push_down(int node, int l, int r) 45 { 46 if(lz[node]) 47 { 48 int mid = (l+r)/2; 49 lz[node*2] += lz[node]; 50 lz[node*2+1] += lz[node]; 51 tree[node*2] += (mid-l+1)*lz[node]; 52 tree[node*2+1] += (r-mid)*lz[node]; 53 lz[node] = 0; 54 } 55 } 56 57 58 void update_range(int node, int l, int r, int L, int R, int add) 59 { 60 if(l <= L && r >= R) 61 { 62 lz[node] += add; 63 tree[node] += (R-L+1)*add; 64 return; 65 } 66 67 push_down(node, L, R); 68 int mid = (L+R)/2; 69 if(mid >= l) 70 update_range(node*2, l, r, L, mid, add); 71 if(mid < r) 72 update_range(node*2+1, l, r, mid+1, R, add); 73 74 tree[node] = tree[node*2] + tree[node*2+1]; 75 } 76 77 78 void print(int node, int l, int r) 79 { 80 if(l == r) 81 { 82 cnt++; 83 printf("%d", tree[node]); 84 if(cnt != N) 85 printf(" "); 86 else 87 printf("\n"); 88 return; 89 } 90 push_down(node, l, r); // 此处一定要记得push_down ! 91 int mid = (l+r)/2; 92 print(node*2, l, mid); 93 print(node*2+1, mid+1, r); 94 95 } 96 97 int main() 98 { 99 100 while(scanf("%d", &N) != EOF) 101 { 102 if(N == 0) 103 break; 104 init(); 105 build(1, 1, N); 106 for(int i = 0; i < N; ++i) 107 { 108 int a, b; 109 scanf("%d%d", &a, &b); 110 update_range(1, a, b, 1, N, 1); 111 } 112 cnt = 0; 113 print(1, 1, N); 114 } 115 116 return 0; 117 }
转载于:https://www.cnblogs.com/FengZeng666/p/11457520.html
Color the ball HDU - 1556 (线段树)相关推荐
- POJ 2777 ZOJ 1610 HDU 1698 --线段树--区间更新
直接将这3题 放一起了 今天在做线段树的东西 这3个都是区间更新的 查询方式互相不同 反正都可以放到一起吧 直接先上链接了 touch me touch me touch me 关于涉及到区间的修改 ...
- hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU - 6183 Color it(动态开点线段树/树状数组套动态开点线段树)
题目链接:点击查看 题目大意:给出一个二维平面坐标系,需要完成四种操作: 0:删除所有点 1 xycx\ y\ cx y c:在点 (x,y)(x,y)(x,y) 处添加颜色 ccc 2 xy1y2x ...
- poj 2777 AND hdu 5316 线段树
区间染色问题,用线段树可以解决.颜色总类不多,故考虑用二进制数的每一位表示一种颜色,然后父节点的颜色就是孩子节点颜色"或"起来,加上lazy标记,轻松AC. poj 2777: 1 ...
- poj 2528 离散化+线段树 hdu 1698 线段树 线段树题目类型一:染色计数 外加离散化
第一次听到离散化是今年省赛的时候,一道矩形并的题,很水,就两个矩形... 今天再去做线段树已经发现离散化忘得差不多了...水逼的悲哀啊... 先看简单点的hdu 1698 http://acm.hdu ...
- hdu 5367(线段树+区间合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5367 官方题解: 对于求"高山脉"长度,可以利用线段树.树节点中保存左高度连续长度 ...
- hdu 5266(线段树+LCA)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5266 解题思路: 考虑dfs序,通过在简单的证明可知L~R的LCA为L ~R 中dfs序较小的那个位置 ...
- hdu 5124(线段树区间更新+lazy思想)
http://acm.hdu.edu.cn/showproblem.php?pid=5124 题意:区间覆盖次数问题. 解题思路:线段树水之. #include<iostream> #in ...
- HDU 4893 线段树
比赛时太大意,斐波拉契数列开小了. 题目大意:1个序列,3种操作,改变序列某个数大小,将序列中连续的一段每个数都变成其最近的斐波拉契数,以及查询序列中某一段的数之和. 解题思路:维护add[]数组表示 ...
最新文章
- 匹配内容主要分为三部分,负载电容的匹配,驱动功率的调试,负性阻抗的测量。...
- SQL------Hint
- 编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和。
- STM32寄存器与输入捕获
- 文本右上角右下角添加文本
- Python(2.7)-元组(tuple)
- 最新数据!妇科类用药领域,中成药占比高
- 【NOIP2001】【codevs1039】数的划分
- python之requests模块
- 汽车加油问题(python)
- html有序列表标签圆点,什么是无序列表、有序列表 、定义列表?html列表标签学习笔记...
- 在服务器上离线下载并在线播放 Cloud Torrent
- vue 3 + mo.js 实现点赞粒子特效【实战】
- 自制滚动的天空,原来很简单,就差细节来人给做做
- 《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》论文翻译
- PacBio下机数据解读
- soul源码阅读 soul数据同步之nacos
- Pytorch DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ
- linux内核uuid生成器测试
- 美国新的州隐私和安全法律解释:你的企业准备好了吗?(二)
热门文章
- Codeforces Round #168 (Div. 2)---A. Lights Out
- PowerShell与Unix Shell对比:八大实例
- EditText图文混排
- redis+celery+django设置外网可访问
- psql: FATAL: role “appleyuchi” does not exist与修改默认密码
- EIGENVECTORS FROM EIGENVALUES论文结论举例验证
- namenode启动不了以及datanode启动不了的解决办法
- ubuntu linux下使用vscode切换python虚拟环境
- K-means算法在手写体数字图像数据上的使用示例-代码详解
- 1.11 多于空间维度的向量组