POJ2182题解——线段树
POJ2182题解——线段树
2019-12-20
by juruoOIer
1.线段树简介(来源:百度百科)
void build_tree(int l,int r,int k)
{
tree[k].l=l;
tree[k].r=r;
tree[k].sum=r-l+;
if(l==r) return ;
int m=(l+r)>>;
build_tree(l,m,k<<);
build_tree(m+,r,(k<<)|);
}
这里使用结构体来完成二叉树的操作:
struct Tree
{
int l,r,sum;
}tree[*N];
最后,给出POJ2182的代码,用以讲解线段树:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=;
int ans[N],b[N];
int n;
struct Tree
{
int l,r,sum;
}tree[*N];
void build_tree(int l,int r,int k)
{
tree[k].l=l;
tree[k].r=r;
tree[k].sum=r-l+;
if(l==r) return ;
int m=(l+r)>>;
build_tree(l,m,k<<);
build_tree(m+,r,(k<<)|);
}
void solve(int num,int k,int i)
{
tree[k].sum--;
if(tree[k].l==tree[k].r)
{
ans[i]=tree[k].l;
return ;
}
if(num<=tree[*k].sum) solve(num,*k,i);
else solve(num-tree[*k].sum,*k+,i);
}
int main()
{
int i,j;
scanf("%d",&n);
for(i=;i<=n;i++) scanf("%d",&b[i]);
b[]=;
build_tree(,n,);
for(i=n;i>=;i--) solve(b[i]+,,i);
for(i=;i<=n;i++) printf("%d\n",ans[i]);
}
部分知识来源:百度百科
POJ2182题解——线段树的更多相关文章
- poj2182(线段树求序列第k小)
题目链接:https://vjudge.net/problem/POJ-2182 题意:有n头牛,从1..n编号,乱序排成一列,给出第2..n个牛其前面有多少比它编号小的个数,记为a[i],求该序列的 ...
- luoguP5105 不强制在线的动态快速排序 [官方?]题解 线段树 / set
不强制在线的动态快速排序 题解 算法一 按照题意模拟 维护一个数组,每次直接往数组后面依次添加\([l, r]\) 每次查询时,暴力地\(sort\)查询即可 复杂度\(O(10^9 * q)\),期 ...
- 理想乡题解 (线段树优化dp)
题面 思路概述 首先,不难想到本题可以用动态规划来解,这里就省略是如何想到动态规划的了. 转移方程 f[i]=min(f[j]+1)(max(i-m,0)<=j<i 且j符合士兵限定) 注 ...
- POJ 3468 A Simple Problem with Integers(详细题解) 线段树
这是个线段树题目,做之前必须要有些线段树基础才行不然你是很难理解的. 此题的难点就是在于你加的数要怎么加,加入你一直加到叶子节点的话,复杂度势必会很高的 具体思路 在增加时,如果要加的区间正好覆盖一个 ...
- [bzoj2752]高速公路 题解(线段树)
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 2102 Solved: 887[Submit] ...
- codedecision P1113 同颜色询问 题解 线段树动态开点
题目描述:https://www.cnblogs.com/problems/p/11789930.html 题目链接:http://codedecision.com/problem/1113 这道题目 ...
- codedecision P1112 区间连续段 题解 线段树
题目描述:https://www.cnblogs.com/problems/p/P1112.html 题目链接:http://codedecision.com/problem/1112 线段树区间操作 ...
- 【poj2828】Buy Tickets 线段树 插队问题
[poj2828]Buy Tickets Description Railway tickets were difficult to buy around the Lunar New Year in ...
- Codeforces Round #254 (Div. 1) C. DZY Loves Colors 线段树
题目链接: http://codeforces.com/problemset/problem/444/C J. DZY Loves Colors time limit per test:2 secon ...
随机推荐
- PHP安全之道学习笔记2:编码安全指南
编码安全指南 编程本身就应该是一门艺术,而安全编程更是一种在刀尖上舞蹈的艺术,不仅要小心脚下的锋利寒刃,更要小心来自网络黑客或攻击者的狂轰乱炸. - by code artist 1.hash比较的缺 ...
- mysql8.0.13安装、使用教程图解
mysql8.0.13安装.使用教程图解 MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Manageme ...
- springboot整合netty的多种方式
netty作为一个高性能的io框架,是非好用的一个技术框架, Netty 是一个基于NIO的客户.服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户. ...
- php 打印数组格式化显示
输出前添加 <pre>,便可以自动格式化换行显示. print_r("<pre>"); 比如打印数组 : print_r($arr); 输出: Array ...
- Android Studio 2.2 NDK开发环境搭建
转载请标明出处:http://blog.csdn.net/shensky711/article/details/52763192 本文出自: [HansChen的博客] Android应用程序使用ND ...
- 前端WEB编辑器最爱——webstrom
欲先善其事,必先利其器,如题.看到网上一篇介绍webstrom的文章,觉得功能确实强大,也知道为什么阿里巴巴的前端传到github上的文件为啥都有一个 .idea 文件,(传说淘宝内部推荐写js用we ...
- win10在python3.6里安装pycrypto-2.6.1
简单的一步搞定 下载pycrypto-2.6.1-cp36-cp36m-win_amd64.whl文件,然后pip install即可 链接: https://pan.baidu.com/s/1Awl ...
- UVA439 骑士的移动 Knight Moves
#include<bits/stdc++.h> using namespace std; char a,c; int b,d; ][]; ]={,,,-,,-,-,-}; ]={,-,,, ...
- 主机配置静态IP
LVS虚拟机配置网关 路径: CentOS 6: vim /etc/sysconfig/network-scripts/ifcfg-eth0 CentOS 7: vim /etc/sysconfig/ ...
- 带着canvas去流浪系列之八 碰撞
[摘要] canvas动画-碰撞仿真 示例代码托管在:http://www.github.com/dashnowords/blogs 经过前面章节相对枯燥的练习,相信你已经能够上手canvas的原生A ...