区间最小值 线段树 (2015年 JXNU_ACS 算法组暑假第一次周赛)
区间最小值
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 12 Accepted Submission(s) : 5
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
接下去一行给出n个数字,代表数字序列。
数字在int范围内。
下一行为一个整数t(1<=t<=10000),代表查询的次数。
最后t行,每行给出一个查询。由两个整数表示l、r(1<=l<=r<=n)。
Output
Sample Input
- 5
- 3 2 1 4 3
- 3
- 1 3
- 2 4
- 4 5
Sample Output
- 1
- 1
- 3
Author
线段树问题。感觉这是最美的数据结构~
非常基础的线段树问题。对于这不懂的还是多多百度呀。
- #include <stdio.h>
- #include <algorithm>
- using namespace std;
- int num[100005];
- struct node
- {
- int left,right,val;//每一个节点有三个值,左区间,右区间,和最小值
- }c[100005*4];
- void build_tree(int l,int r,int root)//建树
- {
- c[root].left=l;
- c[root].right=r;
- if(l==r)//假设左区间等于右区间就赋值
- {
- c[root].val=num[l];
- return ;
- }
- int mid=(l+r)/2;
- build_tree(l,mid,root*2);
- build_tree(mid+1,r,root*2+1);
- c[root].val=min(c[root*2].val,c[root*2+1].val);//递归得到
- }
- void find_tree(int l,int r,int &min1,int root)//查找
- {
- if(c[root].left==l&&c[root].right==r)
- {
- min1=c[root].val;
- return ;
- }
- int mid=(c[root].left+c[root].right)/2;
- if(mid<l)//先找到所要寻找的区间在树上的区间范围
- find_tree(l,r,min1,root*2+1);
- else if(mid>=r)
- find_tree(l,r,min1,root*2);
- else//找到了所要找的区间
- {
- int min2;
- find_tree(l,mid,min1,root*2);//左儿子一个最小值
- find_tree(mid+1,r,min2,root*2+1);//右儿子一个最小值
- min1=min(min1,min2);//选最小的
- }
- }
- int main()
- {
- int n,k;
- while(scanf("%d",&n)!=EOF)
- {
- for(int i=1;i<=n;i++)
- scanf("%d",&num[i]);
- build_tree(1,n,1);
- scanf("%d",&k);
- while(k--)
- {
- int a,b,min1;
- scanf("%d %d",&a,&b);
- find_tree(a,b,min1,1);
- printf("%d\n",min1);
- }
- }
- return 0;
- }
区间最小值 线段树 (2015年 JXNU_ACS 算法组暑假第一次周赛)的更多相关文章
- 区间最小值(2) (线段树 更新区间)2015年 JXNU_ACS 算法组暑假第一次周赛
区间最小值(2) Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Subm ...
- CSU 1809 - Parenthesis - [前缀和+维护区间最小值][线段树/RMQ]
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1809 Bobo has a balanced parenthesis sequenc ...
- tyvj 1038 忠诚 区间最小值 线段树或者rmq
P1038 忠诚 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天 ...
- 【BZOJ4653】【NOI2016】区间(线段树)
[BZOJ4653][NOI2016]区间(线段树) 题面 BZOJ 题解 \(NOI\)良心送分题?? 既然是最大长度减去最小长度 莫名想到那道反复减边求最小生成树 从而求出最小的比值 所以这题的套 ...
- hdu 5700区间交(线段树)
区间交 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...
- BZOJ_4653_[Noi2016]区间_线段树+离散化+双指针
BZOJ_4653_[Noi2016]区间_线段树+离散化+双指针 Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间, ...
- xdoj-1324 (区间离散化-线段树求区间最值)
思想 : 1 优化:题意是覆盖点,将区间看成 (l,r)转化为( l-1,r) 覆盖区间 2 核心:dp[i] 覆盖从1到i区间的最小花费 dp[a[i].r]=min (dp[k])+a[i]s; ...
- Codeforces Round #538 (Div. 2) F 欧拉函数 + 区间修改线段树
https://codeforces.com/contest/1114/problem/F 欧拉函数 + 区间更新线段树 题意 对一个序列(n<=4e5,a[i]<=300)两种操作: 1 ...
- POJ 2528 - Mayor's posters - [离散化+区间修改线段树]
题目链接:http://poj.org/problem?id=2528 Time Limit: 1000MS Memory Limit: 65536K Description The citizens ...
随机推荐
- hdu3652B-number(数位dp)
B-number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 通过DOM实现点击隐藏父元素
HTML代码简单如下: <ul id='ul1'> <li><a href="javascript:">1</a></li&g ...
- CALayer帧动画
CALayer帧动画 _sunLayer = [[CALayer alloc]init]; _sunLayer.contents = (id)[UIImage imageNamed:@"su ...
- 深入理解Redis(一)——高级键管理与数据结构
引语 这个章节主要讲解了三部分内容: 如何设计并管理Redis的键以及与其关联的数据结构: 了解并使用Redis客户端对象映射器: 介绍如何利用大O标记来评估Redis性能. 键与数据结构 键 我们先 ...
- pdf 转成 一张图片
1.maven依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfb ...
- python2.X现在不能安装Django了:Collecting django Using cached Django-2.0.tar.gz
使用pip安装django2: pip install django 报错: Collecting django Using cached Django-2.0.tar.gz Complete ...
- Run as ant build每次都执行两次-问题解决
在Eclipse里面,运行ant,整个测试流程总是执行两遍,其几天试了下在DOS命令行直接调用ant, 结果发现只执行了一次,并且内存消耗好像也没那么大了,估计是eclipse自己的问题.问题解决了, ...
- Unity引擎的Player Settings介绍
我用的是unity5.4.3版本的 一.窗口打开: 从菜单栏查看播放器设置,选择 Edit->Project Settings->Player 二.全局设置 第一部分: Company N ...
- ie8及其以下版本兼容性问题之文本省略
1. 单行文本省略 单行文本省略适用于文本超出内容显示区,则在末尾显示省略号 1.1 普通文本超出省略 普通文本超出显示省略号,示例: .p{ height: 30px line-height: 30 ...
- Apache安装简述
软件下载地址:http://pan.baidu.com/s/1o8oexKI 1.httpd -k install 2.httpd -k restart 3.启动bin文件夹里的httpd.exe 4 ...