數據結構(RMQ):POJ 3624 Balanced Lineup

Balanced Lineup

Description

For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things simple, he will take a contiguous range of cows from the milking lineup to play the game. However, for all the cows to have fun they should not differ too much in height.

Farmer John has made a list of Q (1 ≤ Q ≤ 200,000) potential groups of cows and their heights (1 ≤ height ≤ 1,000,000). For each group, he wants your help to determine the difference in height between the shortest and the tallest cow in the group.

Input

Line 1: Two space-separated integers, N and Q.
Lines 2..N+1: Line i+1 contains a single integer that is the height of cow i
Lines N+2..N+Q+1: Two integers A and B (1 ≤ ABN), representing the range of cows from A to B inclusive.

Output

Lines 1..Q: Each line contains a single integer that is a response to a reply and indicates the difference in height between the tallest and shortest cow in the range.

Sample Input

6 3
1
7
3
4
2
5
1 5
4 6
2 2

Sample Output

6
3
0

  這題是一個裸的RMQ問題。
 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 const int maxn=50010;
 6 int mm[maxn],Min[maxn][20],Max[maxn][20],a[maxn];
 7 int main(){
 8 #ifndef ONLINE_JUDGE
 9     //freopen(".in","r",stdin);
10     //freopen(".out","w",stdout);
11 #endif    
12     
13     int n,Q;
14     scanf("%d%d",&n,&Q);
15     for(int i=1;i<=n;i++)
16         scanf("%d",&a[i]);
17     mm[0]=-1;
18     for(int i=1;i<=n;i++){
19         mm[i]=(i&(i-1))?mm[i-1]:mm[i-1]+1;
20         Max[i][0]=a[i];
21         Min[i][0]=a[i];
22     }
23     for(int k=1;k<=mm[n];k++)
24         for(int i=1;i+(1<<(k-1))<=n;i++){
25             Max[i][k]=max(Max[i][k-1],Max[i+(1<<(k-1))][k-1]);
26             Min[i][k]=min(Min[i][k-1],Min[i+(1<<(k-1))][k-1]);
27         }
28         
29     int a,b;
30     while(Q--)
31     {
32         scanf("%d%d",&a,&b);
33         printf("%d\n",max(Max[a][mm[b-a+1]],Max[b-(1<<mm[b-a+1])+1][mm[b-a+1]])-min(Min[a][mm[b-a+1]],Min[b-(1<<mm[b-a+1])+1][mm[b-a+1]]));
34     }    
35     return 0;
36 }

?

轉載于:https://www.cnblogs.com/TenderRun/p/5277449.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373432.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373432.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373432.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Apache Thrift快速入門教程

Thrift是一種跨語言RPC框架&#xff0c;最初是在Facebook上開發的&#xff0c;現在作為Apache項目開源。 這篇文章將描述如何以不同的模式&#xff08;例如阻塞&#xff0c;非阻塞和異步&#xff09;編寫Thrift服務和客戶端。 &#xff08;我覺得后兩種模式的文檔較少&#xff…

數組拆分為新數組

package com.classes;//已知數組a&#xff0c;將奇數位置元素存到b數組中&#xff0c;偶數位置元素存到c數組中public class Shuzu1118_4 { public static void main(String[] args) { int [] a{3,6,9,1,4,7,2,5,8}; int [] b; //定義數組b int [] c; //定義數組c//先找出數組…

java數組交集_java數組的交集和并集

前兩天給我出了一道題&#xff0c;求數組的并集和交集&#xff0c;然后我試著寫一下&#xff0c;很尷尬&#xff0c;由于長時間沒有寫過代碼&#xff0c;一開始數組是如何定義的給忘了。當時我說了我的思路&#xff0c;不過也是很low的做法&#xff0c;查閱網上的一些資料&…

ADF聲明性組件示例

在我以前的文章中&#xff0c;我答應展示如何為智能值列表創建ADF聲明性組件。 因此&#xff0c;我將創建一個包含三個元素的組件&#xff1a;標簽&#xff0c;輸入文本和值的組合框列表。 那很容易。 我在工作空間中創建了一個單獨的ADF ViewController項目&#xff1a; 在此項…

VS2015 安裝包缺失(聯網安裝失敗)問題解決

Win7 x86 測試可行 * 如果前面有嘗試過安裝不成功, 一定要用卸載程序刪除已安裝的部分,否則會出亂子. 1. 或者是用虛擬光驅加載ISO, 或者是解壓到硬盤上, 都沒有關系. 2. 用管理員權限啟動CMD控制臺, 進入VS2015 安裝盤的根目錄 (vs_enterprise.exe 所在的目錄). 3. 執行命令 …

java藍橋暑假班_Java實現 藍橋杯VIP 算法提高 班級排名

算法提高 班級排名時間限制&#xff1a;1.0s 內存限制&#xff1a;256.0MB問題描述達達在陶陶的影響下&#xff0c;也對學習慢慢的產生了興趣。他在每次考試之后&#xff0c;都會追著老師問&#xff0c;自己在班級的總名次是多少。考試一多&#xff0c;老師也不耐煩了&#xff…

$.ajax所犯的錯誤。success后面不執行

$.ajax({ type: post, url: ../AshxHandler/HandlerAddPhoto.ashx, data: { clientPath: photoName }, dataType: text, cache: false, success: function (data) { alert(1); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(上傳圖片出現錯誤&#xf…

WhateverOrigin –與Heroku和Play對抗相同的原產地政策! 構架

不久前&#xff0c;我在編碼 Bitcoin Pie時發現需要克服臭名昭著的Same Origin Policy &#xff0c;該政策限制了運行在客戶端瀏覽器上的javascript可以訪問的域。 通過Stack Overflow&#xff0c;我找到了一個名為Any Origin的站點&#xff0c;這基本上是無需設置專用服務器即…

Solr集群更新配置的方式

solr集群中配置文件是經常更新的&#xff0c;頻率最高的也就是schema.xml和solrconfig.xml這兩個配置文件了&#xff0c;對于更新配置文件之前&#xff0c;我們先了解一下集群項目結構 由于在集群模式下&#xff0c;solrconfig.xml和schema.xml等配置文件都由Zookeeper集群管理…

java文本框雙擊可編輯_java swing 文本域雙擊變為可編輯

java swing如何實現文本域雙擊變為可編輯呢?給文本域添加鼠標事件監聽程序即可:resultTA1new AssistPopupTextArea();resultTA1.setEditable(false);resultTA1.setLineWrap(true);resultTA1.setWrapStyleWord(true);resultTA1.addMouseListener(new MouseAdapter() {Overridep…

點擊出現黑色背景的解決

-webkit-tap-highlight-color:rgba(0,0,0,0);轉載于:https://www.cnblogs.com/luckyXcc/p/6085582.html

OSGi簡介–模塊化Java

OSGi聯盟是這一擱淺的管理機構&#xff0c;它始于1999年。其最初目標是為網絡設備創建開放擱淺。 基于此思想&#xff0c;此規范也針對Java引入。 Eclipse在Java中是第一個。 他們于2004年6月推出了基于OSGi的Eclipse IDE。 OSGi是在Java中定義動態模塊的方法。 主要為Java實現…

HDU FatMouse's Speed 基本DP

題意&#xff1a;要求找到的體重遞增&#xff0c;速度遞減的老鼠&#xff0c;并且輸出最長的長度數&#xff0c;而且輸出各自的序列數。Special Judge 思路&#xff1a;先按體重由小到大排序&#xff0c;再找最長速度遞減序列。 轉移方程&#xff1a;mou[i].w>mou[j].w&am…

java xmpp openfire_搭建Xmpp服務器Openfire

step1、 安裝java環境這里是檢測是否安裝java的網頁如沒有安裝則進行以下步驟1、下載jdk7的mac版&#xff1a;jdk-7u79-macosx-x64.dmg2、安裝好之后&#xff0c;在命令行進入以下路徑查看#cd /Library/Java/JavaVirtualMachines/3、再查看你自己安裝的版本#ls版本為jdk-8u171-…

JavaFX移動應用程序最佳實踐,第1部分

到現在為止&#xff0c;所有對JavaFX感興趣的人都會知道&#xff0c;JavaFX Mobile發行了不久 前。 可以肯定的是&#xff0c;這真是令人難以置信。 我感到筋疲力盡&#xff0c;在發行期間我什至沒有精力去寫博客…… 但是到目前為止&#xff0c;我感到很恢復&#xff0c;并且希…

Spark程序運行報錯解決(1)

報錯內容&#xff1a;System memory 259522560 must be at least 4.718592E8. Please use a larger heap size. 解決&#xff1a;Window——Preference——Java——Installed JREs——選中一個Jre 后 Edit 在Default VM arguments 里加入&#xff1a;-Xmx512M 轉載于:https://w…

java setsolinger_java socket 的參數選項解讀(轉)

在MulticastSocket的源代碼里有設置多播的方法&#xff1a;public void setInterface(InetAddress inf) throwsSocketException {if(isClosed()) {throw new SocketException("Socket is closed");}checkAddress(inf, "setInterface");synchronized(infLoc…

【轉】Linux終端下 dstat 監控工具

轉自https://linux.cn/article-3215-1.html dstat 是一個可以取代vmstat&#xff0c;iostat&#xff0c;netstat和ifstat這些命令的多功能產品。dstat克服了這些命令的局限并增加了一些另外的功能&#xff0c;增加了監控項&#xff0c;也變得更靈活了。dstat可以很方便監控系統…

Tomcat和IntelliJ –在webapps文件夾之外部署war文件

目前&#xff0c;我正在開發一個Android應用程序&#xff0c;該應用程序需要云中托管的大量REST服務來支持。 我基于對Java&#xff0c;Groovy以及最重要的Spring的支持選擇了Google App Engine 。 我開發了一個基于Spring MVC的REST應用程序&#xff0c;并使用ContentNegotiat…

[HDU1232] 暢通工程 (并查集 or 連通分量)

Input 測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數&#xff0c;分別是城鎮數目N ( < 1000 )和道路數目M&#xff1b;隨后的M行對應M條道路&#xff0c;每行給出一對正整數&#xff0c;分別是該條道路直接連通的兩個城鎮的編號。為簡單起見&#xff0c;城鎮…