[原创]HDU 1566 Color the ball [树状数组区间更新]【数据结构】
2016-11-10 19:53:10 Tabris_ 阅读数:228
博客爬取于 2020-06-14 22:42:39
以下为正文
版权声明:本文为 Tabris 原创文章,未经博主允许不得私自转载。
https://blog.csdn.net/qq_33184171/article/details/53120130
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556
-------------------------------------------------.
Color the ball
Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17629 Accepted Submission(s): 8823
Problem Description
N 个气球排成一排,从左到右依次编号为 1,2,3....N.每次给定 2 个整数 a b(a <= b),lele 便为骑上他的“小飞鸽"牌电动车从气球 a 开始到气球 b 依次给每个气球涂一次颜色。但是 N 次以后 lele 已经忘记了第 I 个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?
Input
每个测试实例第一行为一个整数 N,(N <= 100000).接下来的 N 行,每行包括 2 个整数 a b(1 <= a <= b <= N)。
当 N = 0,输入结束。
Output
每个测试实例输出一行,包括 N 个整数,第 I 个数代表第 I 个气球总共被涂色的次数。
Sample Input
3
1 1
2 2
3 3
3
1 1
1 2
1 3
0
Sample Output
1 1 1
3 2 1
Author
8600
Source
HDU 2006-12 Programming Contest
----------------------------------------------------.
题目大意: 。。。
解题思路:
题目给的很清楚了是区间更新,所以思考。
每次区间的每一个值都 +1,那么考虑数据结构中的线段树和树状数组,
这里采用树状数组的做法。
这里只要直接根据树状数组的意义直接做就行了 ,
因为树状数组无非也就是一个动态的前缀和而且 。
这样的话没更新一个值,那么后面的所有值也相当于更新了;
所以更新区间就可以只单点更新两次就行了
对于区间(a,b)
只要给 a 更新 +1,给 b 更新-1 就行了;
附本题代码
-------------------------------------------.
1 | # include <bits/stdc++.h> |


