HDOJ/HDU 1556 Color the ball(树状数组)
2016-05-26 22:11
267 查看
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
看到好多人做这个题都是用的线段树~~经过长时间尝试~发现完全可以不用线段树~
直接来一个数组离散化~树状数组
和插段求点相比有点变化
但是其实是差不多的。
插线段的话就在线段左端点加1,在右端点后面减一。
这样求和得到的就是这个点的染色次数了。
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
看到好多人做这个题都是用的线段树~~经过长时间尝试~发现完全可以不用线段树~
直接来一个数组离散化~树状数组
和插段求点相比有点变化
但是其实是差不多的。
插线段的话就在线段左端点加1,在右端点后面减一。
这样求和得到的就是这个点的染色次数了。
import java.util.Scanner; /** * @author 陈浩翔 * 2016-5-26 */ public class Main{ public static void main(String[] args) { Scanner sc =new Scanner(System.in); while(sc.hasNext()){ int n =sc.nextInt(); if(n==0){ return; } int num[] = new int[n+5]; for(int i=0;i<n;i++){ int a=sc.nextInt(); int b=sc.nextInt(); num[a]++; num[b+1]--; } int m=num[1]; System.out.print(m); for(int i=2;i<=n;i++){ m+=num[i]; System.out.print(" "+m); } System.out.println(); } } }
相关文章推荐
- 苏老堤边玉一林,六桥风月是知音。任他桃李争欢赏,不为繁华易素心。(他人总结一)
- HDOJ/HDU 1556 Color the ball(树状数组)
- WIN8/8.1/10换系统常见的几个问题
- UIView-九宫格
- leetcode 66(plus one)
- Leetcode之reorder-list
- 3.2.4 FrameLayout(帧布局)
- Codeforces Round #354 (Div. 2) D Theseus and labyrinth
- WIN8/8.1/10换系统常见的几个问题
- Android Scroll分析 (二) 教你使用七种方法实现滑动
- 研究4.4的进程的保活
- ssl简单配置
- 关于如何使用websocket 接收并显示图片或者操作二进制
- 编程之美-数组除法
- Codeforces Round #354 (Div. 2) C Vasya and String(尺取法二分)
- 《Head First C#》学习 ---第二章总结
- iOS开发中使用平率很高的宏定义
- bash简单命令扩展
- DEDECMS之八 漏洞错误和疑难杂症
- 艾宾浩斯记忆曲线