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

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

题目描述

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

Output

1 1 1 3 2 1

思路

首先,我们一看这个题,就知道这一定是树状数组,但似乎有点变化。

我们知道,这是每次让X~Y加1,查询每一个气球。所以这是一道区间修改,单点查询。

接下来直接上代码

/*************************************************Author        :  xzj213*Created Time  :  2019.06.07 20:44*Mail          :  xzj213@qq.com*Problem       :  HDU1556.cpp************************************************/#include
using namespace std;const int maxn=100000+5;int c[maxn],a[maxn],t,n,m;int tree[maxn];int lowbit(int x){ return x&-x;}void add(int i,int x){ while(i>0){ c[i]+=x; i-=lowbit(i); }} int find(int x){ int sum=0; while(x<=n){ sum+=c[x]; x+=lowbit(x); } return sum;}//基本的树状数组int read() { int x=0,f=1; char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();} while(ch<='9'&&ch>='0'){x=x*10+ch-'0';ch=getchar();} return x*f;}//毒瘤快读(不要去看)int main() { while(~scanf("%d",&n)){ memset(c,0,sizeof(c));//多组数据数组要清零 if(n==0)return 0; for(int i=1,x,y;i<=n;i++){ scanf("%d%d",&x,&y); add(y,1); add(x-1,-1);//区间修改 } for(int i=1;i

转载于:https://www.cnblogs.com/xzj213/p/10989920.html

你可能感兴趣的文章
Alphabet财报让华尔街兴奋:股价还会涨 买买买
查看>>
数据专家必知必会的7款Python工具
查看>>
关于数据分析,管理者常犯的4个错误
查看>>
A Neural Probabilistic Language Model
查看>>
如何使用网络视频服务器的权限管理
查看>>
WannaCry警示:学会检测和减轻云端恶意内容
查看>>
光纤将在5G发展中发挥关键作用
查看>>
思博伦推出Temeva平台:“云中测试”成为可能
查看>>
移动CRM风起云涌 千亿级市场显现
查看>>
韩国SK电讯宣布成功研发量子中继器
查看>>
TCP - WAIT状态及其对繁忙的服务器的影响
查看>>
安全预警:全球13.5亿的ARRIS有线调制解调器可被远程攻击
查看>>
麦子学院与阿里云战略合作 在线教育领军者技术实力被认可
查看>>
正确看待大数据
查看>>
Facebook通过10亿单词构建有效的神经网络语言模型
查看>>
2016股市投资风向标 大数据说了算
查看>>
发展大数据不能抛弃“小数据”
查看>>
25000个布满恶意软件的摄像头组成的僵尸网络
查看>>
FB全球开放360度直播功能 首先需要一个FB账号
查看>>
量子通信成信息安全领域发展重点 潜在市场望达1000亿元
查看>>