問題 H 老管家的忠誠(線段樹)

2021-09-16 12:32:46 字數 1511 閱讀 1411

時間限制: 0 sec  記憶體限制: 128 mb

提交: 54  解決: 21

[提交][狀態][討論版][命題人:外部匯入]

老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3…編號,然後不定時的問管家問題,問題是這樣的:在a到b號賬中最少的一筆是多少?為了讓管家沒時間作假他總是一次問多個問題。           在詢問過程中賬本的內容可能會被修改

輸入中第一行有兩個數m,n表示有m(m< =100000)筆賬,n表示有n個問題,n< =100000。 接下來每行為3個數字,第乙個p為數字1或數字2,第二個數為x,第三個數為y 當p=1  則查詢x,y區間 當p=2  則改變第x個數為y

輸出檔案中為每個問題的答案。具體檢視樣例。

10 3

1 2 3 4 5 6 7 8 9 10

1 2 7

2 2 0

1 1 10

2 0

#include #include 

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const ll maxn = 1

<<17

;const ll maxd = 1e8+10

;const ll mod = 99824435300

;ll b[maxn];

ll date[maxn*4-1

],n;

void

init(ll nn)

for(ll i=1;i<=2*n-1;i++)

}void

update(ll k,ll a)

}ll query(ll a,ll b,ll k,ll l,ll r)

if(a<=l&&r<=b)

else

}int

main()

ll r,q;

for(i=1;i<=m;i++)

if(l>r)

if(l==r)

else

continue

; }

ll mm=0

; printf(

"%lld

",query(max(l-1,mm),r,0,0

,n));

if(i}

return0;

}

posted on

2019-04-02 18:53

蔡軍帥_acm 閱讀(

...)

編輯收藏

計蒜客 管家的忠誠 線段樹

老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3 編號,然後不定時的問管家問題,問...

小H的詢問(線段樹)

線段樹需要維護的 最大有效子區間權值和,左端最大有效子區間權值和,右端最大有效子區間權值和,區間和,本區間有效性。include include include include include include include define maxn 1000005 using namespace s...

線段樹 簡單的整數問題2

給定乙個長度為n的數列a,以及m條指令,每條指令可能是以下兩種之一 1 c l r d 表示把 a l a l 1 a r 都加上 d。2 q l r 表示詢問 數列中第 l r 個數的和。對於每個詢問,輸出乙個整數表示答案。輸入格式 第一行兩個整數n,m。第二行n個整數a i 接下來m行表示m條指...