hicoder - 1068 【RMQ or 线段树】
RMQ:
1 #include <bits/stdc++.h> 2 #define rep(i,a,b) for(int i = a;i <= b;++ i) 3 #define per(i,a,b) for(int i = a;i >= b;-- i) 4 #define mem(a,b) memset((a),(b),sizeof((a))) 5 #define FIN freopen("in.txt","r",stdin) 6 #define IO ios_base::sync_with_stdio(0),cin.tie(0) 7 #define pb push_back 8 using namespace std; 9 typedef long long LL; 10 typedef pair<int, int> PIR; 11 const int N = 1e6+5; 12 13 int n, m, l, r, mm[N], a[N], dp[N][20]; 14 15 void RMQ_init(){ 16 rep(i, 1, n) dp[i][0] = a[i]; 17 for(int j = 1; (1<<j) <= n; ++j){ 18 for(int i = 0; i+(1<<j)-1 <= n; ++i) 19 dp[i][j] = min(dp[i][j-1], dp[i+(1<<(j-1))][j-1]); 20 } 21 } 22 int RMQ(int l, int r){ 23 int k = 0; 24 while(1<<(k+1) <= r-l+1) k++; 25 return min(dp[l][k], dp[r-(1<<k)+1][k]); 26 } 27 int main() 28 {//IO; 29 //FIN; 30 scanf("%d", &n); 31 rep(i, 1, n) scanf("%d", &a[i]); 32 RMQ_init(); 33 scanf("%d", &m); 34 while(m--){ 35 scanf("%d%d", &l, &r); 36 printf("%d\n", RMQ(l, r)); 37 } 38 return 0; 39 }
View Code
线段树:
1 #include <bits/stdc++.h> 2 #define rep(i,a,b) for(int i = a;i <= b;++ i) 3 #define per(i,a,b) for(int i = a;i >= b;-- i) 4 #define mem(a,b) memset((a),(b),sizeof((a))) 5 #define FIN freopen("in.txt","r",stdin) 6 #define IO ios_base::sync_with_stdio(0),cin.tie(0) 7 #define pb push_back 8 #define mid ((l+r)>>1) 9 #define ls (id<<1) 10 #define rs ((id<<1)|1) 11 using namespace std; 12 typedef long long LL; 13 typedef pair<int, int> PIR; 14 const int N = 1e6+5; 15 16 int n, m, op, x, y, a[N]; 17 18 struct Node{ 19 int minn; 20 }node[N*4]; 21 void pushUp(int id, int l, int r){ 22 node[id].minn = min(node[ls].minn, node[rs].minn); 23 } 24 void build(int id, int l, int r){ 25 if(l == r) { node[id].minn = a[l]; return; } 26 build(ls, l, mid); 27 build(rs, mid+1, r); 28 pushUp(id, l, r); 29 } 30 void update(int id, int l, int r, int p, int val){ 31 if(l == r && l == p) { node[id].minn = val; return; } 32 if(p <= mid) update(ls, l, mid, p, val); 33 else update(rs, mid+1, r, p, val); 34 pushUp(id, l, r); 35 } 36 int query(int id, int l, int r, int ql, int qr){ 37 if(l == ql && r == qr) return node[id].minn; 38 if(qr <= mid) query(ls, l, mid, ql, qr); 39 else if(ql > mid) query(rs, mid+1, r, ql, qr); 40 else{ 41 return min(query(ls, l, mid, ql, mid), query(rs, mid+1, r, mid+1, qr)); 42 } 43 } 44 int main() 45 {IO; 46 //FIN; 47 scanf("%d", &n); 48 rep(i, 1, n) scanf("%d", &a[i]); 49 build(1, 1, n); 50 scanf("%d", &m); 51 while(m--){ 52 scanf("%d %d", &x, &y); 53 printf("%d\n", query(1, 1, n, x, y)); 54 } 55 return 0; 56 }
View Code
转载于:https://www.cnblogs.com/NWUACM/p/6764227.html
hicoder - 1068 【RMQ or 线段树】相关推荐
- 19.CF803G Periodic RMQ Problem 线段树+分块+线段树标记
19.CF803G Periodic RMQ Problem 线段树+分块+线段树标记 个人Limitの线段树题单题解主目录:Limitの线段树题单 题解目录_HeartFireY的博客-CSDN博客 ...
- poj 3264 Balanced Lineup RMQ问题 线段树
For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One d ...
- NYOJ 1068 ST(线段树之 成段更新+区间求和)
ST 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 "麻雀"lengdan用随机数生成了后台数据,但是笨笨的他被妹纸的问题给难住了... 已知len ...
- HDU 6194 string string string 后缀数组 + RMQ(线段树)
传送门:HDU6194 题意:问给定字符串中有多少种出现k次的子串. 思路:首先想到后缀数组经典问题,求出现不少于k次的子串的最大长度,类似的这题肯定就是在height数组上搞事情啦. 将height ...
- CodeForces - 1422F Boring Queries(主席树+线段树/RMQ)
题目链接:点击查看 题目大意:给出 n 个数组成的数组 a ,再给出 m 次询问,每次询问需要回答区间 [ l , r ] 中所有元素的最小公倍数,强制在线 题目分析:首先考虑多个数的最小公倍数该如何 ...
- HDU3183 A Magic Lamp —— 贪心(单调队列优化)/ RMQ / 线段树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 题解: 方法一:贪心. 在草稿纸上试多几次可以知道,删除数字中从左到右最后一位递增(可以等于)的 ...
- 【听说是线段树】bzoj1012 [JSOI2008]最大数maxnumber
一眼看题目吓了一跳:这TM不就是单调队列吗,200000又怎样,大不了我二分嘛 系统提示:成功开启 手残模式 开始瞎写: 1 #include <cstdio> 2 long long a ...
- 线段树练习——区间合并
这类题目会询问区间中满足条件的连续最长区间,所以PushUp的时候需要对左右儿子的区间进行合并(这里最难理解) hdu 3308 http://acm.hdu.edu.cn/showproblem.p ...
- 线段树/扫描线问卷调查反馈——Rmq Problem / mex(主席树),Boring Queries(二分+st表+主席树),Colorful Squares(扫描线)
文章目录 Rmq Problem / mex Boring Queries Colorful Squares Rmq Problem / mex luogu4137 对aia_iai建权值线段树 再 ...
最新文章
- unity 可滚动文本_Unity3d如何实现滚动文本框?
- 产品网络推广方案浅谈网站的相关性对优化的影响!
- 计算机软件硬件试讲,试讲:初识计算机网络
- Cloud.com今天正式上线了
- python --- opencv部分学习
- [渝粤教育] 广东-国家-开放大学 21秋期末考试财务管理10164k2 (2)
- 程序员---不要对自己说“不可能”
- CentOS64位下python2.6升级到2.7的详细教程
- md5 php 加密后乱码_PHP md5函数 的16位字符乱码问题解决-阿里云开发者社区
- filter - date 日期插件
- C++ char/byte 转16进制字符串
- linux 查看fd命令,Linux中一种友好的find替代工具(fd命令)
- Linux - 计划任务
- spec文件知识整理
- R语言逻辑回归Logistic回归分析预测股票涨跌
- docker仓库mysql所有版本_Docker 安装 MySQL8.0
- Win7从文件服务器复制文件速度慢问题处理
- CCVP 642-446认证介绍
- udf,udaf,udtf之间的区别
- java url 图片路径_问个URL图片路径问题