忠誠(線段樹)

2022-02-27 06:34:25 字數 1415 閱讀 7416

老管家是乙個聰明能幹的人。他為財主工作了整整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 編號,然後不定時的問管家問題,問...