老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3…編號,然後不定時的問管家問題,問題是這樣的:在a到b號賬中最少的一筆是多少?為了讓管家沒時間作假他總是一次問多個問題。
輸入格式:
輸入中第一行有兩個數m,n表示有m(m<=100000)筆賬,n表示有n個問題,n<=100000。
第二行為m個數,分別是賬目的錢數
後面n行分別是n個問題,每行有2個數字說明開始結束的賬目編號。
輸出格式:
輸出檔案中為每個問題的答案。具體檢視樣例。
線段樹維護區間最小值的裸題
方法同前面的一篇部落格 [jsoi2008]最大數(線段樹基礎)
只需要改變查詢方式和插入方式即可
#include#include#include
#define rii register int i
#define int long long
using
namespace
std;
struct
nodx[
800005
];int
n,m,v,l1,r1;
void add(int nl,int nr,int l,int r,int val,int
bh)
if(nr>r)
x[bh].minx=min(x[bh].minx,val);
if(l==nl&&r==nr)
int ltt=(l+r)/2
;
if(nl<=ltt)
if(nr>=ltt+1
)
}int fid(int nl,int nr,int l,int r,int
bh)
if(nr>r)
if(l==nl&&r==nr)
int ltt=1
<<30
;
int kkk=1
<<30
;
int mid=(l+r)/2
;
if(nl<=mid)
if(nr>=mid+1
)
return
min(ltt,kkk);
}#undef int
intmain()
scanf(
"%lld%lld
",&m,&n);
for(rii=1;i<=m;i++)
for(rii=1;i<=n;i++)
}
計蒜客 管家的忠誠 線段樹
老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3 編號,然後不定時的問管家問題,問...
問題 H 老管家的忠誠(線段樹)
時間限制 0 sec 記憶體限制 128 mb 提交 54 解決 21 提交 狀態 討論版 命題人 外部匯入 老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了...
洛谷P1816 忠誠 線段樹
老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3 編號,然後不定時的問管家問題,問...