HDU 1556 Color the ball
来源:互联网 发布:疯狂java讲义第5版pdf 编辑:程序博客网 时间:2024/06/08 05:36
HDU 1556 Color the ball
题目链接:HDU 1556 Color the ball
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,每次给某区间涂色,求最后每个点涂色次数。
AC代码:
#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <algorithm>#include <iostream>#include <locale>#include <vector>#include <string>#include <iomanip>#include <cstdio>#include <cstring>#include <stack>#include <queue>#include <map>#include <set>#include <functional>using namespace std;int ans[1000005];int n;struct shu{ int l,r; int n;}a[1000005];void init(int l,int r,int i){ a[i].l=l; a[i].r=r; a[i].n=0; if(l==r) return; int m=(l+r)>>1; init(l,m,i<<1); init(m+1,r,i<<1|1);}void update(int i,int x,int y){ if(a[i].l==x&&a[i].r==y) a[i].n++; else { int m=(a[i].l+a[i].r)>>1; if(x>m) update(i<<1|1,x,y); else if(y<=m) update(i<<1,x,y); else { update(i<<1,x,m); update(i<<1|1,m+1,y); } }}void jisuan(int x){ for(int i=a[x].l;i<=a[x].r;i++) ans[i]+=a[x].n; if(a[x].l==a[x].r) return; jisuan(x<<1); jisuan(x<<1|1);}int main(){ int x,y; while(~scanf("%d",&n),n) { init(1,n,1); memset(ans,0,sizeof ans); for(int i=0;i<n;i++) { scanf("%d%d",&x,&y); update(1,x,y); } jisuan(1); for(int i=1;i<n;i++) printf("%d ",ans[i]); printf("%d\n",ans[n]); } return 0;}
阅读全文
0 0
- hdu 1556 color the ball
- hdu 1556Color the ball
- HDU 1556 - Color the ball
- Hdu 1556 Color the ball
- hdu 1556 Color the ball
- hdu 1556 Color the ball
- hdu 1556 Color the ball
- hdu 1556 Color the ball
- hdu 1556 Color the ball
- hdu 1556 Color the ball
- HDU 1556 Color the ball
- HDU 1556 Color the ball
- HDU 1556 Color the ball
- HDU 1556 Color the ball
- HDU 1556 Color the ball
- HDU 1556 Color the ball
- HDU 1556 Color the ball
- HDU 1556 Color the ball
- 查询学生姓名、所属年级及电话
- 数据隐藏之Qt中d指针详解
- 查询2013年3月22日参加考试的最低分出现在那个科目
- C++ 定时器的用法:SetTimer和Ontimer
- 在 React 中什么时候使用箭头函数
- HDU 1556 Color the ball
- 统计数据库中的学生人数
- NYOJ737 石子合并(区间DP)
- 查询第二学期的学生中所有在1990年后出生的学生姓名
- 【JAVA 提高班之五】Java多态对象的类型转换
- Python爬虫——漫画下载
- generateAsync is deprecated
- 一些试题(C语言)
- spring容器加载完成执行某个方法