(沒有介紹標準算法的)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司机全国各地奖励政策汇总 (2月8日-2月14日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 华为LiteOS系统使用-任务调度函数-第一篇
1.最近项目遇到华为的LiteOS小型操作系统,使用学习 2. 先打开一个工程LiteOS_Kernel-master\projects\LPC824_LITE_KEIL 3. main.c里面2个关 ...
- ACID、数据库隔离级别
ACID: A(Atomicity):原子性,要么全部执行,要么都不执行 C(consistency):一致性: 特点: 1.一个操作除法级联,这些必须成功,否则全部失败(原子性) 2.所有节点同步更 ...
- 使用postman实现半自动化
前些日子项目要上一个活动,其中有一个功能是幸运大转盘,用户可以随机抽奖,奖品有多种满减券及多种商品,但是奖品都是有抽中概率的,且有的商品还设置有库存,所以测试点便是测试抽奖的概率和库存.接下来拆分一下 ...
- Linearize an sRGB texture in Photoshop
From:https://forum.unity.com/threads/bug-with-bypass-srgb-sampling.282469/
- hdu刷题1
1002 大数加法 #include<iostream> #include<cstring> using namespace std; int main() { ],b[]; ...
- Linux的基础预备知识
Linux下一切皆文件 1.root@mk-virtual-machine:/home/mk# root:该位置表示当前终端登录的用户名 mk-virtual-machine:/home/m ...
- HTML 之 表单
关于HTML的表单 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&q ...
- 正则表达式 和 re 模块
正则表达式究竟是什么? 在一些网站注册的时候需要输入手机号码,当你输入一个错误的手机号码的时候,会提示你输入的手机号码格式错误 那么他究竟是如何判断的呢? 我们用Python代码进行表示: phone ...
- Turtlebot
Turtlebot2 数据分析: imu信息:只有z轴的旋转yaw,没有xy的角速度. odom:利用轮速计,提供平移变换,没有z方向的平移. 好的网站,详细介绍了turtlebot的使用:https ...