(沒有介紹標準算法的)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 ...
随机推荐
- BZOJ1968_COMMON约数研究_KEY
题目传送门 BZOJ水题,for i=1~N,答案加上N/i即可 ANS=∑N/i(i∈{1~N}) code: /****************************************** ...
- 成都Uber优步司机奖励政策(2月29日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 【Keras案例学习】 CNN做手写字符分类(mnist_cnn )
from __future__ import print_function import numpy as np np.random.seed(1337) from keras.datasets im ...
- 2 进程multiprocessing [mʌltɪ'prəʊsesɪŋ] time模块
1.multiprocessing模块 multiprocessing模块就是跨平台版本的多进程模块. multiprocessing模块提供了一个Process类来代表一个进程对象, 2.Proce ...
- wamp报错SCREAM:Error suppression ignored for
问题:SCREAM:Error suppression ignored for 解决: 在php.ini最下面加入scream.enabled = Off http://stackoverflow.c ...
- MyBatis-自定义结果映射规则
1.自定义结果集映射规则 ①查询 <!-- public Employee getEmpById(Integer id); --> <select id="getEmpBy ...
- 解决美图看看不出现在“Open with”的子菜单中的问题
最近由于特殊需求,要使用美图看看,Win10系统,美图看看工作倒也正常,但出现一个比较郁闷的情况,就是只能在“Open with”的最下面一个子菜单中选择“Choose another app”,然后 ...
- 汽车VIN码,车架号,移动端,服务器端OCR识别 技术公司
很多人在购买车辆的时候,只关注性能.外观.内饰等,其实真正的内行是首先看车辆的VIN码,也叫车架号码. VIN码(车架号码)是一辆车的唯一身份证明,一般在车辆的挡风玻璃处,有的在车辆防火墙上,或B柱铭 ...
- 180615-精度计算BigDecimal
文章链接:https://liuyueyi.github.io/hexblog/2018/06/15/180615-精度计算BigDecimal/ 180615-精度计算BigDecimal 目前接触 ...
- 180601-MySql性能监控工具MyTop
文章链接:https://blog.hhui.top/hexblog/2018/06/01/180601-MySql性能监控工具MyTop/ mysql 性能监控小工具之 mytop 参考: How ...