博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu——1556Color the ball(树状数组)
阅读量:4047 次
发布时间:2019-05-25

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

Color the ball

Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 15310    Accepted Submission(s): 7629
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
31 12 23 331 11 21 30
 
Sample Output
1 1 13 2 1
 
Author
8600
 
Source
 
Recommend
LL

 

树状数组在改变一个数据时整个数组的值都会改变  在这道题目中  需要求某一个气球涂过的次数 假如结果(a,b)  那么需要进行add(a,1);然后进行add(b+1,-1)来抵消对b以后的气球的影响 

#include
#include
#include
using namespace std;long long sum;int tree[100010];long long lowbit(long long n){ return n&-n;}void add(long long n,long long m){ while(n<=sum) { tree[n]+=m; n+=lowbit(n); }}long long getsum(long long n){ long long h=0; while(n>0) { h+=tree[n]; n-=lowbit(n); } return h;}int main(){ long long n,m,i,a[100010]; while(cin>>sum&&sum) { memset(a,0,sizeof(a)); memset(tree,0,sizeof(tree)); for(i=1;i<=sum;i++) { cin>>n>>m; add(n,1); add(m+1,-1); } for(i=1;i<=sum;i++) { if(i==1)cout<

转载地址:http://ktfci.baihongyu.com/

你可能感兴趣的文章
从头开始学习jsp(2)——jsp的基本语法
查看>>
使用与或运算完成两个整数的相加
查看>>
备忘:java中的递归
查看>>
DIV/CSS:一个贴在左上角的标签
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
Vue组件
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
<转>文档视图指针互获
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
关于进制转换的具体实现代码
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>