题目1544:数字序列区间最小值
题目1544:数字序列区间最小值
时间限制:1 秒
内存限制:128 兆
特殊判题:否
- 题目描述:
-
给定一个数字序列,查询任意给定区间内数字的最小值。
- 输入:
-
输入包含多组测试用例,每组测试用例的开头为一个整数n(1<=n<=100000),代表数字序列的长度。
接下去一行给出n个数字,代表数字序列。数字在int范围内。
下一行为一个整数t(1<=t<=10000),代表查询的次数。
最后t行,每行给出一个查询,由两个整数表示l、r(1<=l<=r<=n)。
- 输出:
-
对于每个查询,输出区间[l,r]内的最小值。
- 样例输入:
-
5 3 2 1 4 3 3 1 3 2 4 4 5
- 样例输出:
-
1 1 3区间最值,线段树入门最基本的试题。
#include <iostream> #include <stdio.h> #include <queue> #include <stdio.h> #include <string.h> #include <vector> #include <queue> #include <set> #include <algorithm> #include <map> #include <math.h> #define Max(a,b) ((a)>(b)?(a):(b)) #define Min(a,b) ((a)<(b)?(a):(b)) using namespace std ; typedef long long LL ; const int N_size=100008 ; int N ,M ; struct Seg{int left ;int right ;int min_num ; }seg[N_size*3]; //二叉树性质,注意这个地方 int num[N_size] ; void make_tree(int L ,int R ,int id){seg[id].left=L ;seg[id].right=R ;if(L==R){seg[id].min_num=num[L] ;return ;}int mid=(L+R)>>1 ;make_tree(L,mid,id*2) ;make_tree(mid+1,R,id*2+1) ;seg[id].min_num=Min(seg[id*2].min_num,seg[id*2+1].min_num) ; } int query(int L ,int R ,int id){if(L<=seg[id].left&&seg[id].right<=R)return seg[id].min_num ;int mid=(seg[id].left+seg[id].right)>>1 ;if(R<=mid)return query(L,R,id*2) ;else if(mid<L)return query(L,R,id*2+1) ;elsereturn Min(query(L,mid,id*2),query(mid+1,R,id*2+1)) ; } int main(){int L ,R ;while(scanf("%d",&N)!=EOF){for(int i=1;i<=N;i++)scanf("%d",&num[i]) ;make_tree(1,N,1) ;scanf("%d",&M) ;while(M--){scanf("%d%d",&L,&R) ;if(L>R)swap(L,R) ;printf("%d\n",query(L,R,1)) ;}}return 0 ; }
转载于:https://www.cnblogs.com/liyangtianmen/p/3354982.html
题目1544:数字序列区间最小值相关推荐
- bzoj1049[HAOI2006]数字序列
1049: [HAOI2006]数字序列 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1813 Solved: 789 [Submit][Sta ...
- 找出数组中最长的连续数字序列(JavaScript实现)
原始题目: 给定一个无序的整数序列, 找最长的连续数字序列. 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]. 小菜给出的解法: 1 func ...
- P4331 [BalticOI 2004]Sequence 数字序列(左偏树)
P4331 [BalticOI 2004]Sequence 数字序列 给定一个序列整数a1,a2,a3,-,an−1,ana_1, a_2, a_3, \dots, a_{n - 1}, a_na1 ...
- bzoj 1049: [HAOI2006]数字序列(DP+DP)
1049: [HAOI2006]数字序列 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1848 Solved: 801 [Submit][Sta ...
- 线段树2 求区间最小值
线段树2 求区间最小值 递归,DFS,尤其是二叉树,我只要知道我的返回节点就好,因为DFS的顺序一定是一样的,不同的题目和数据范围也是一样的,只是返回节点让DFS的深度不同. 递归的内容只有两部分:1 ...
- 华为机试真题 C 实现【非严格递增连续数字序列】【2022 Q4新题】
所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录 题目 输入一个字符串仅包含大小写字母和数字,求字符串中包含 ...
- 数字序列 Number Sequence
题目描述 给出一个正整数i.编写一个程序来查找位于编号组S1S2 ... Sk序列中位置i的数字.每组Sk由一系列从1到k的正整数组成,依次写入. 例如,序列的前80位数字如下: 1121231 ...
- TZOJ 3315 买火车票(线段树区间最小值)
描述 Byteotian州铁道部决定赶上时代,为此他们引进了城市联网.假设城市联网顺次连接着n 个市从1 到n 编号(起始城市编号为1,终止城市编号为n).每辆火车有m个座位且在任何两个运送更多的乘客 ...
- 快手校招笔试题 数字序列第n位的值
题目描述 有一个无限长的数字序列1,2,2,3,3,3,4,4,4,4,5,5,5,5,5...(数字序列从1开始递增,且数字k在该序列中正好出现k次),求第n项是多少 输入描述: 输入为一个整数n ...
- 华为机试:非严格递增连续数字序列
[编程题目 | 100分]非严格递增连续数字序列 [ 100 / 简单 ] 非严格递增连续数字序列 题目描述: 输入一个字符串仅包含大小写字母和数字,求字符串中包含的最长的非严格递增连续数字序列的长度 ...
最新文章
- ​2021年机器学习什么风向?把注意力放在MLP上
- 打开vsd_低温修正下的CDFA与VSD
- 如何有效的压缩虚拟磁盘
- js实现椭圆轨迹_华为开发者大会2020隆重召开,亿健T10椭圆机荣耀参展
- 连接linux系统的mysql,Linux系统MySQL开启远程连接
- 自定义类加载器与热部署
- SQL Prompt教程:使用SQL提示代码分析避免T-SQL技术债务
- IEEE access参考文献的添加
- 编曲宿主DAW是什么 2023年编曲宿主软件哪个好用
- 点点动画~画出懂你的3D魔方
- 国防科技大学计算机考研资料汇总
- 2、SpringBoot接口Http协议开发实战8节课(7-8)
- 计算机二级考试python+C语言通过记录
- 啃光学论文的笔记(1)
- 6月17日吃鸡服务器维护,英雄联盟6月17日更新了什么
- 计算机网络原理第3章 数据链路层 (超全知识点+例题)
- 卷积码树状图怎么画_第八讲卷积码详解.ppt
- linux下使用 sb设备的方法,Linux虚拟文件系统概述(2)get_sb
- 紫金计算机科学技术男女比例,福建省内7所高校公布2020级新生数据!你的大学男女比例是多少?...
- 在java中下面对于构造函数描述正确的是_在Java中,下面对于构造函数的描述正确的是()。(选择一项)...