题意:

N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?


思路:

      这个题目可以用线段树来做,可以用线段树的段更新点询问,每次把a,b全部+1,最后全部查询一遍就行了,水题不解释,不理解直接看代码。

#include<stdio.h>
#include<string.h> #define lson l ,mid ,t << 1
#define rson mid + 1 ,r ,t << 1 | 1

__int64
sum[440000] ,mark[440000]; void Pushup(int t)
{

sum[t] = sum[t<<1] + sum[t<<1|1];
} void
Pushdown(int t ,int ll)
{
if(
mark[t])
{

mark[t<<1] += mark[t];
mark[t<<1|1] += mark[t];
sum[t<<1] += (ll - (ll >> 1)) * mark[t];
sum[t<<1|1] += (ll >> 1) * mark[t];
mark[t] = 0;
}
} void
BuidTree()
{

memset(sum ,0 ,sizeof(sum));
memset(mark ,0 ,sizeof(mark));
} void
Update(int l ,int r ,int t ,int a ,int b ,int c)
{
if(
a <= l && b >= r)
{

sum[t] += (r - l + 1) * c;
mark[t] += c;
return;
}

Pushdown(t ,r - l + 1);
int
mid = (l + r) >> 1;
if(
a <= mid) Update(lson ,a ,b ,c);
if(
b > mid) Update(rson ,a ,b ,c);
Pushup(t);
} __int64
Query(int l ,int r ,int t ,int a ,int b)
{
if(
a <= l && b >= r)
return
sum[t];
Pushdown(t ,r - l + 1);
int
mid = (l + r) >> 1;
__int64
ans = 0;
if(
a <= mid) ans = Query(lson ,a ,b);
if(
b > mid) ans += Query(rson ,a ,b);
return
ans;
} int main ()
{
int
n ,a ,b ,i;
while(~
scanf("%d" ,&n) && n)
{

BuidTree();
for(
i = 1 ;i <= n ;i ++)
{

scanf("%d %d" ,&a ,&b);
Update(1 ,n ,1 ,a ,b ,1);
}
for(
i = 1 ;i <= n ;i ++)
if(
i == n) printf("%I64d\n" ,Query(1 ,n ,1 ,i ,i));
else
printf("%I64d " ,Query(1 ,n ,1 ,i ,i));
}
return
0;
}


hdu1556 线段树段更新(简单题)的更多相关文章

  1. UESTC 1591 An easy problem A【线段树点更新裸题】

    An easy problem A Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others ...

  2. UVA11992不错的线段树段更新

    题意:       给你一个矩阵,最大20*50000的,然后有三个操作 1 x1 y1 x2 y2 v  把子矩阵的值全部都加上v 2 x1 y1 x2 y2 v  把子矩阵的值全部都变成v 2 x ...

  3. hihoCoder #1078 : 线段树的区间修改(线段树区间更新板子题)

    #1078 : 线段树的区间修改 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题 ...

  4. hdu4267线段树段更新,点查找,55棵线段树.

    题意:      给你N个数,q组操作,操作有两种,查询和改变,查询就是查询当前的这个数上有多少,更改是给你a b k c,每次从a到b,每隔k的数更改一次,之间的数不更改,就相当于跳着更新. 思路: ...

  5. POJ2528线段树段更新逆序异或(广告牌)

    题意:      可以这样理解,有一条直线,然后用n条线段去覆盖,最后问全部都覆盖完之后还有多少是没有被完全覆盖的. 思路:      一开始想的有点偏,想到起点排序,然后..失败了,原因是忘记了题目 ...

  6. FZU Problem 2171 防守阵地 II (线段树区间更新模板题)

    http://acm.fzu.edu.cn/problem.php?pid=2171 成段增减,区间求和.add累加更新的次数. #include <iostream> #include ...

  7. HDU 1698 Just a Hook (线段树区间更新入门题)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  8. HDU1698:Just a Hook(线段树区域更新模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1698 Problem Description In the game of DotA, Pudge’s meat ...

  9. POJ3277 线段树段更新,点询问+二分离散化+暴力

    题意:       x轴上有一些矩形,问你这些矩形覆盖的面积和是多少. 思路:       首先范围很大,n很小,果断离散化,然后我们就是求出任意区间的最大值作为当前区间的高,最后在算一遍答案就行了, ...

随机推荐

  1. PTA1071 - Speech Patterns - map计算不同单词个数

    题意 输出给定字符串出现最多的字符串(小写输出)和出现次数. 所求字符串要求:字符中可以含有A-Z.0-9. 比如说题目给出的Can1,我们可以转换成can1,can1就算一个字符串整体,而不是单独的 ...

  2. python面试题,print写在for循环内和外的区别

    1.统计列表中正数和负数的数量a = [1,3,5,7,0,-1,-9,-4,-5,8]b = []c = []for i in a : if i>0: b.append(i) elif i&l ...

  3. 解决图片把父元素向下撑大大约3px问题

    现象  bug: 图片在div\li\dt 等  图片把父元素向下撑大大约3px  <style>         img {             width: 30%; //这里由于 ...

  4. 推荐模型DeepCrossing: 原理介绍与TensorFlow2.0实现

    DeepCrossing是在AutoRec之后,微软完整的将深度学习应用在推荐系统的模型.其应用场景是搜索推荐广告中,解决了特征工程,稀疏向量稠密化,多层神经网路的优化拟合等问题.所使用的特征在论文中 ...

  5. bjd_ctf

    1.抓包修改 ​ 提示修改id,postman修改headers里面的id 分析得到id是admin加admin的base64编码,payload为id: adminYWRtaW4= 请求后又提示请使 ...

  6. java中常见的内存泄露的例子

    JAVA 中的内存泄露     Java中的内存泄露,广义并通俗的说,就是:不再会被使用的对象的内存不能被回收,就是内存泄露.     Java中的内存泄露与C++中的表现有所不同.     在C++ ...

  7. 2.掌握numpy数组

    一.改变数组形态 reshape()--通过改变数组的维度改变数组形态 import numpy as np Array=np.arange(1,17,1) Array Array_1=np.aran ...

  8. 从键盘读入学生成绩,找出最高分, 并输出学生成绩等级(Java)

    从键盘读入学生成绩,找出最高分, 并输出学生成绩等级 一.题目 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10 等级为'A' 成绩>=最高分-20 等级为'B' ...

  9. 《逆向工程核心原理》——TLS回调函数

    pe中TLS(thread local storage)中函数的执行时机早于入口函数(entry point), 相关结构: // // Thread Local Storage // typedef ...

  10. CentOS7使用NTP搭建时间同步服务器

    前言 为什么要搭建时间同步服务器呢?场景是这样的. 我们有两台CentOS服务器,其中一台是可以连接外网的,下文中我们称它为A服务器,另一台不能连接外网,但是与A服务器在同一局域网中,下文中我们称它为 ...