(沒有介紹標準算法的)RMQ問題
感謝杜哥代碼滋磁
//以下是廢話
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。
#include<iostream>
#include<cstdio>
#define maxn 1000010
#define INF 11000000
using namespace std; int n, m; int a[maxn]; #define lc i << 1
#define rc i << 1 | 1
int T[maxn * 4];
inline void maintain(int i){T[i] = min(T[lc], T[rc]);} void build(int i, int l, int r){
if(l == r){T[i] = a[l]; return ;}
int m = l + r >> 1;
build(lc, l, m); build(rc, m + 1, r);
maintain(i);
} void update(int i, int l, int r, int k, int v){
if(l == r){T[i] = v; return ;}
int m = l + r >> 1;
if(k <= m) update(lc, l, m, k, v);
else update(rc, m + 1, r, k, v);
maintain(i);
} int query(int i, int l, int r, int L, int R){
if(l > R || r < L) return INF;
if(L <= l && r <= R) return T[i];
int m = l + r >> 1;
return min(query(lc, l, m, L, R), query(rc, m + 1, r, L, R));
} inline void solve_1(){
int x, y; scanf("%d%d", &x, &y);
update(1, 1, n, x, y);
} inline void solve_2(){
int x, y; scanf("%d%d", &x, &y);
printf("%d\n", query(1, 1, n, x, y));
} int main(){
scanf("%d", &n);
for(int i = 1; i <= n; ++i) scanf("%d", &a[i]);
build(1, 1, n);
scanf("%d", &m);
for(int i = 1; i <= m; ++i){
int opt; scanf("%d", &opt);
switch(opt){
case 1 : solve_1(); break;
case 0 : solve_2(); break;
}
}
return 0;
}
#include<cstdio>
#include<iostream>
using namespace std;
int Log[100005],st[23][100005],n,l,r,m; inline int max(int a,int b){
return a>b? a:b;
} inline long long read(){
long long a=0; int f=0; char p=getchar();
while(!isdigit(p)) {f|=p=='-'; p=getchar();}
while(isdigit(p)){a=(a<<3)+(a<<1)+(p^48); p=getchar();}
return f? -a:a;
} int main()
{
n=read(),m=read();
for(int i=2;i<=n;++i) Log[i]=Log[(i>>1)]+1;
for(int i=1;i<=n;++i)
st[0][i]=read();
for(int i=1;i<=20;++i)
for(int j=1;j+(1<<i)-1<=n;++j)
st[i][j]=max(st[i-1][j],st[i-1][j+(1<<(i-1))]);
while(m--){
l=read(),r=read();
int t=Log[r-l+1];
printf("%d\n",max(st[t][l],st[t][r-(1<<t)+1]));
}
return 0;
}
(沒有介紹標準算法的)RMQ問題的更多相关文章
- Linux Kernel 排程機制介紹
http://loda.hala01.com/2011/12/linux-kernel-%E6%8E%92%E7%A8%8B%E6%A9%9F%E5%88%B6%E4%BB%8B%E7%B4%B9/ ...
- COB(Chip On Board)的製程簡單介紹
前面提及 COB 的生產與 IC 的封裝製程幾乎是一致的,除了把 leadframe 改成了 PCB,把封膠由 molding 改成 dispensing,少了 triming & marki ...
- Sublime Text 套件介紹:Pretty JSON
JSON,一個輕量級的資料交換語言,目前許多網站AJAX request的回應結果都是JSON格式 以下是一個標準的JSON格式 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...
- Sublime Text 套件介紹(四):Pretty JSON
JSON,一個輕量級的資料交換語言,目前許多網站AJAX request的回應結果都是JSON格式 以下是一個標準的JSON格式 { "firstName": " ...
- PCB成型製程介紹
PCB成型製程在電子構裝中所扮演的角色 下圖是電腦主機的內部組成 我們將以插在主機板上的一片 USB擴充卡來說明PCB成型製 程在電子構裝中所扮演的角色 PCB成型製程的子製程 USB擴充卡要插入主機 ...
- QR Code於台灣各行業的行銷應用案例介紹
當走在東京的大街小巷時,在五花八門的廣告看板.雜誌.護照簽證.海關.宣傳品.廣告.旅遊和導覽手冊.產品包裝.甚至在餐廳菜單上,皆可看到上面有一組黑色神秘二維條碼圖案:QR Code,當看到有興趣的商品 ...
- Visual Studio 跨平台開發實戰(2) - Xamarin.iOS 基本控制項介紹 (转帖)
前言 在上一篇文章中, 我們介紹了Xamarin 以及簡單的HelloWorld範例, 這次我們針對iOS的專案目錄架構以及基本控制項進行說明. 包含UIButton,, UISlider, UISw ...
- oracle系統表、數據字典介紹與日常問題診斷
oracle系統表.數據字典介紹與日常問題診斷 數據字典是由唯讀的table和view組成的,產生於$oracle_home\rdbms\admin\catalog.sql.裡面儲存Oracle資料庫 ...
- 用Razor語法寫範本-RazorEngine組件介紹【转——非常好,可以用它来代替NVelocity】
RazorEngine 官網網址:http://razorengine.codeplex.com 在找到RazorEngine之前曾經想過其他的方案,如T4與V8 Engine載jquery.temp ...
随机推荐
- 北京Uber优步司机奖励政策(11月23日~11月29日)
用户组:人民优步"关羽组"(适用于11月23日-11月29日)奖励政策: 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最 ...
- Python科学计算器(计算器)
说明 该计算器主要是为了练习正则表达式以及python基础所写:代码比较low! 运行过程 请输入你的计算公式, 计算器会将计算结果输出到屏幕上(此处会打印步骤); 退出(exit/quit) MyC ...
- Habse中Rowkey的设计原则——通俗易懂篇
Hbase的Rowkey设计原则 一. Hbase介绍 HBase -> Hadoop Database,HBase是Apache的Hadoop项目的子项目.HBase不同于一般的关系数据库,它 ...
- netty之管道处理流程
1.我们在使用netty的是有都会存在将channelBuffer的数据处理成相应的String或者自定义数据.而这里主要是介绍管道里面存在的上行和下行的数据处理方式 2.通过一张图片来看一下具体管道 ...
- swoole 相关
安装虚拟机 VMware Workstation Pro 安装CentOS CentOS-7-x86_64-Minimal-1708.iso 安装FinalShell 教程地址 安装lnmp 教程地址 ...
- uvaoj 213 - Message Decoding(二进制,输入技巧)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- idea前端页面不刷新----springboot
修改这里就好了
- VMware 15.0下载及安装教程
虚拟机 VMware WorkStation Pro15 下载及安装详细解 9虚拟机 VMware WorkStation Pro15 下载及安装详细解. 虚拟机官方网站: https://www.v ...
- lintcode735. Replace With Greatest From Right
Given an array of integers, replace every element with the next greatest element (greatest element o ...
- 吴恩达j机器学习之过拟合
五.编程作业: 见:https://www.cnblogs.com/tommyngx/p/9933803.html