博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdoj_1556Color the ball
阅读量:4590 次
发布时间:2019-06-09

本文共 1334 字,大约阅读时间需要 4 分钟。

Color the ball

Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5330    Accepted Submission(s): 2841


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
改段求点。

#include 
#include
#include
using namespace std;#pragma warning(disable : 4996)const int MAXN = 100005;int tree[MAXN];int n;int LowBit(int t){ return t&(-t); }void Update(int pos, int num){ while(pos <= n) { tree[pos] += num; pos += LowBit(pos); }}int GetSum(int end){ int sum = 0; while(end > 0) { sum += tree[end]; end -= LowBit(end); } return sum;}int main(){ freopen("in.txt","r",stdin); int x, y; while(scanf("%d", &n) != EOF) { if(n == 0) { break; } memset(tree, 0, sizeof(tree)); for(int i = 1;i <= n; i++) { scanf("%d %d", &x, &y); Update(x, 1); Update(y + 1, -1); } for(int i = 1;i < n; i++) { printf("%d ", GetSum(i)); } printf("%d\n", GetSum(n)); } return 0;}

转载于:https://www.cnblogs.com/lgh1992314/archive/2013/06/04/5834986.html

你可能感兴趣的文章
linux程序对比
查看>>
linux数码管驱动程序和应用程序
查看>>
linux在菜单中添加SEG选项
查看>>
linux物理地址和虚拟地址
查看>>
linux驱动程序与菜单关联
查看>>
linux在配置菜单中添加选项
查看>>
linux修改文件系统注册设备
查看>>
linux添加地址映射
查看>>
c#程序集
查看>>
Microsoft 中间语言
查看>>
.NET Framework 简介
查看>>
c#通用语言运行时CLR
查看>>
编译和执行 C# 应用程序
查看>>
c#命名空间
查看>>
c#字面量
查看>>
C# 应用程序文件夹结构
查看>>
c# Format() 方法
查看>>
c#实例
查看>>
c# Format() 方法
查看>>
c# String 常用方法应用
查看>>