Color the ball

Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 16530    Accepted Submission(s): 8228
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
 

Author
8600
 

Source
 

Recommend
LL
题目的大概意思就是记录每个气球的涂色次数 这里如果单独的去处理每个元素 恭喜你 tle
这里用线段树的思想 记录每一段被涂过的次数 然后最后从上向下找的时候 累加起来(子随父)
搞清这一点 这道题目就是一道简单的线段树的题目了 ps(这道题目让我对节点 下标 以及线段树的组成有了更深的理解----- 下标1代表第一大段 即原始段 2代表第一左字段 依次类推)
#include<cstdio>
#include<iostream>
#define maxn 1000010
using namespace std;
struct node
{
int l,r,num;
}stu[maxn*3 ];
int n,x,y;
void buildtree(int i,int l,int r)//i为线段树的节点
{
stu[i].l=l;
stu[i].r=r;
stu[i].num=0;//二分
if(l==r) return;
buildtree(i*2,l,(l+r)/2);
buildtree(i*2+1,(l+r)/2+1,r);
}
void updata(int x,int y,int i)//有点询问的意思
{
int l=stu[i].l;
int r=stu[i].r;
int mid=(l+r)/2;
if(l==x&&r==y)//把单个的元素涂色 看成一层的元素涂色
{
stu[i].num++;
return;
}
if(y<=mid) updata(x,y,i*2); //要掌握这个基本的搜索的过程 不断的分解
else if(x>mid) updata(x,y,i*2+1);
else
{
updata(x,mid,i*2);
updata(mid+1,y,i*2+1);
}
}
void que(int pos,int sum)//区分节点值 与下标 //这里的sum就是累加项目了 不断的进行累加 直到区间长度为一为止
{
int l=stu[pos].l;
int r=stu[pos].r;
int mid=(l+r)/2;
if(l==r)
{
if(l==1) printf("%d",stu[pos].num+sum);
else printf(" %d",stu[pos].num+sum);
return;
}
que(pos*2,stu[pos].num+sum);
que(pos*2+1,stu[pos].num+sum);
}
int main()
{
while(cin>>n)
{
if(n==0) break;
buildtree(1,1,n); while(n--)
{
cin>>x>>y;
updata(x,y,1);
}
que(1,0);
cout<<endl;
}
return 0;
}

嗯 第二道线段树题目 对左右节点和下标有了更深的理解 hdu1556的更多相关文章

  1. 【ACM/ICPC2013】线段树题目集合(一)

    前言:前一段时间在网上找了一个线段树题目列表,我顺着做了一些,今天我把做过的整理一下.感觉自己对线段树了解的还不是很深,自己的算法能力还要加强.光练代码能力还是不够的,要多思考.向队友学习,向大牛学习 ...

  2. 线段树&&线段树的创建线段树的查询&&单节点更新&&区间更新

    目录 线段树 什么是线段树? 线段树的创建 线段树的查询 单节点更新 区间更新 未完待续 线段树 实现问题:常用于求数组区间最小值 时间复杂度:(1).建树复杂度:nlogn.(2).线段树算法复杂度 ...

  3. Codeforces 438D (今日gg模拟第二题) | 线段树 考察时间复杂度的计算 -_-|||

    Codeforces 438D The Child and Sequence 给出一个序列,进行如下三种操作: 区间求和 区间每个数模x 单点修改 如果没有第二个操作的话,就是一棵简单的线段树.那么如 ...

  4. 线段树 & 题目

    首先说下我写的线段树吧. 我是按照线段树[完全版]那个人的写法来写的,因为网上大多数题解都是按照他的写法来写. 确实比较飘逸,所以就借用了. 节点大小是maxn是4倍,准确来说是大于maxn的2^x次 ...

  5. bzoj1012: [JSOI2008]最大数maxnumber(貌似是道线段树喔)

    1012: [JSOI2008]最大数maxnumber 题目:传送门 题解: 发现自己空了一道水题... 1~210000建线段树,其实就是一道裸题... 单点修改+区间查询...1A~ 代码: # ...

  6. HDU 4614 Vases and Flowers (2013多校第二场线段树)

    题意摘自:http://blog.csdn.net/kdqzzxxcc/article/details/9474169 ORZZ 题意:给你N个花瓶,编号是0 到 N - 1 ,初始状态花瓶是空的,每 ...

  7. HDU6602 Longest Subarray hdu多校第二场 线段树

    HDU6602 Longest Subarray 线段树 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6602 题意: 给你一段区间,让你求最长的区间使 ...

  8. Balanced Lineup(最简单的线段树题目)

    Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 33389   Accepted: 15665 Case Time Limit ...

  9. hdu 1166敌兵布阵(线段树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    M ...

随机推荐

  1. Cross-Site Request Forgery (CSRF)

    https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF) Overview Cross-Site Request Forger ...

  2. python代码-leetcode1 两数相加

    1.两个循环 class Solution: def twoSum(self, nums, target): n=len(nums) for i in range(n): for j in range ...

  3. 建站之星v2.7快速更换模版

    网站建设很多人使用建站之星因为它的拖拽功能非常友好.但是很多人不会使用建站之星更换模版,网上的教程又复杂难懂,现在教大家一个简单快捷的办法. 方法/步骤     废话不多说,从模版目录找到你喜欢的模版 ...

  4. vmware安装密钥

    VMware虚拟机已升级至14版本,之前的12版本的秘钥已经无法使用,在此分享一下VMware Workstation 14永久激活密钥: CG54H-D8D0H-H8DHY-C6X7X-N2KG6 ...

  5. nginx多个if条件并且查询

    set $flag 0; if (!-e $request_filename){    set $flag "${flag}1"; } if ($uri ~* "^(.* ...

  6. laravel console handle 传参方法

    <?php namespace App\Console\Commands; use Illuminate\Console\Command; use App\Libs\wxpay\CLogFile ...

  7. 看看BeginInvoke的用法,亲爱的们

    看看它是杂带参数的哈 using System; using System.Threading; class MyTest { delegate bool deleTest(string a,stri ...

  8. render()中添加js函数

    方案一: { title: '操作', key: 'operation', render: (_, record) => ( <div> <Link to={`/hostMai ...

  9. SQL Server数据同步交换

    一.为了解决数据同步汇聚,数据分发,数据转换,数据维护等需求,TreeSoft将复杂的网状的同步链路变成了星型数据链路.     TreeSoft作为中间传输载体负责连接各种数据源,为各种异构数据库之 ...

  10. pip3快速下载paddle

    安装百度的paddle paddle时很慢,后来采用国内的源,速度嗖嗖滴 pip3 install -U paddlepaddle -i https://pypi.douban.com/simple/ ...