hdu1556 Color the ball 线段树区间染色问题
都是老套路了,如果n=5,要把区间[1,4]染色,可以递归去染区间[1,3]和区间[4,4],如果区间相等就自加,不相等继续递归寻找对应区间。
打印结果时,把所有到达叶节点包含i的区间值相加,就是最后答案。
AC代码:
#include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=8e5; int tree[maxn]; void Build_tree(int l,int r,int ll,int rr,int cur){ if(l==ll&&r==rr){ tree[cur]++; return; } int mid=(ll+rr)/2; if(r<=mid) Build_tree(l,r,ll,mid,cur<<1); else if(l>=mid+1) Build_tree(l,r,mid+1,rr,(cur<<1)+1); else { Build_tree(l,mid,ll,mid,cur<<1); Build_tree(mid+1,r,mid+1,rr,(cur<<1)+1); } } int u,n; void print(int l,int r,int cur,int cnt){ cnt+=tree[cur]; if(l==r) { ++u; if(u==n) printf("%d\n",cnt); else printf("%d ",cnt); return; } print(l,(l+r)/2,cur<<1,cnt); print((l+r)/2+1,r,(cur<<1)+1,cnt); } int main(){ while(scanf("%d",&n)==1&&n){ memset(tree,0,sizeof(tree)); u=0; int l,r; for(int i=0;i<n;++i){ scanf("%d%d",&l,&r); Build_tree(l,r,1,n,1); } print(1,n,1,0); } return 0; }
如有不当之处欢迎指出!
hdu1556 Color the ball 线段树区间染色问题的更多相关文章
- HDU.1556 Color the ball (线段树 区间更新 单点查询)
HDU.1556 Color the ball (线段树 区间更新 单点查询) 题意分析 注意一下pushdown 和 pushup 模板类的题还真不能自己套啊,手写一遍才行 代码总览 #includ ...
- HDU 1556 Color the ball(线段树区间更新)
Color the ball 我真的该认真的复习一下以前没懂的知识了,今天看了一下线段树,以前只会用模板,现在看懂了之后,发现还有这么多巧妙的地方,好厉害啊 所以就应该尽量搞懂 弄明白每个知识点 [题 ...
- hdu 1556 Color the ball(线段树区间维护+单点求值)
传送门:Color the ball Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/3276 ...
- Color the ball 线段树 区间更新但点查询
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #inclu ...
- HDU1556 Color the ball [线段树模板]
题意:区间修改序列值,最后输出. //hdu1166 #include<iostream> #include<cstdio> #include<cstring> # ...
- hdu 1556 Color the ball 线段树 区间更新
水一下 #include <bits/stdc++.h> #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 ...
- HDU3974 Assign the task(多叉树转换为线段+线段树区间染色)
题目大意:有n个人,给你他们的关系(老板和员工),没有直属上司的人就是整个公司的领导者,这意味着n个人形成一棵树(多叉树).当一个人被分配工作时他会让他的下属也做同样的工作(并且立即停止手头正在做的工 ...
- hdu 5023(线段树区间染色,统计区间内颜色个数)
题目描述:区间染色问题,统计给定区间内有多少种颜色? 线段树模板的核心是对标记的处理 可以记下沿途经过的标记,到达目的节点之后一块算,也可以更新的时候直接更新到每一个节点 Lazy操作减少修改的次数( ...
- 线段树区间染色 ZOJ 1610
Count the Colors ZOJ - 1610 传送门 线段树区间染色求染色的片段数 #include <cstdio> #include <iostream> #in ...
随机推荐
- U盘安装CentOS 7问题解决
1 使用U盘安装最新版Centos时报错(CentOS-7-x86_64-DVD-1503-01): 错误提示:"Warning:could not boot;Warning: /dev/r ...
- HSSF、XSSF和SXSSF区别以及Excel导出优化
之前有写过运用POI的HSSF方式导出数据到Excel(见:springMVC中使用POI方式导出excel至客户端.服务器实例),但这种方式当数据量大到一定程度时容易出现内存溢出等问题. 首先,PO ...
- 《css定位 position》课程笔记
这是我学习课程css定位 position时做的笔记! 本节内容 html的三种布局方式 position可选参数 z-index 盒子模型和定位的区别 侧边栏导航跟随实例 html的三种布局方式 三 ...
- su鉴定故障
su切换用户鉴定故障 [yolo1@izqfsfqp8ejn9zz ~]$ su root密码:su: 鉴定故障[yolo1@izqfsfqp8ejn9zz ~]$ sudo root 我们信任您已经 ...
- GitHub For Beginners: Don’t Get Scared, Get Started
It's 2013, and there's no way around it: you need to learn how to use GitHub.2 Why? Because it's a s ...
- mkdir -p 参数的使用
ssh root@%s -o ConnectTimeout=2 "ssh root@%s ConnectTimeout=2 "if [ ! -d /root/scripts ]; ...
- Effective Java 之-----静态工厂与构造器
一. 考虑用静态工厂方法代替构造器: 1)静态工厂方法与构造器不同的第一大优势在于:他们有名称.当一个类需要多个带有相同签名的构造器时,就用静态方法代替构造器,并慎重的选择名称以突出他们间的区别: 2 ...
- TensorFlow实战之Softmax Regression识别手写数字
关于本文说明,本人原博客地址位于http://blog.csdn.net/qq_37608890,本文来自笔者于2018年02月21日 23:10:04所撰写内容(http://blog.c ...
- c++类的基础
1.抽象: 抽象出公有特性,包括公有动作,公有数据. 2.类:类是具有相同属性和行为的一组对象的集合(变量和函数) 声明格式: class 类名(Dog) { 类体:(数据和函数成员)默认为私有成员, ...
- Nginx的try_files指令和命名location使用实例
Nginx的配置语法灵活,可控制度非常高.在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率. 下面是一个使用实 ...