SCOI2016 主席樹 貪心 美味

2021-09-27 14:01:29 字數 1984 閱讀 2139

【描述】

一家餐廳有 n 道菜,編號 1…n ,大家對第 i 道菜的評價值為 ai(

1<=i

<=n

)a_i(1<=i<=n)

ai​(

1<=i

<=n

)。有 m 位顧客,第 i 位顧客的期望值為 bi,而他的偏好值為 xi 。因此,第 i 位顧客認為第 j 道菜的美味度為 bix

or(a

j+xi

)b_i xor (a_j+x_i)

bi​xor

(aj​

+xi​

),xor 表示異或運算。

第 i 位顧客希望從這些菜中挑出他認為最美味的菜,即美味值最大的菜,但由於**等因素,他只能從第 li 道到第 ri 道中選擇。請你幫助他們找出最美味的菜。

【輸入】

第1行,兩個整數,n,m,表示菜品數和顧客數。第2行,n個整數,a1,

a2,.

..,a

na_1,a_2,...,a_n

a1​,a2

​,..

.,an

​,表示每道菜的評價值。第3至m+2行,每行4個整數,b,x,l,r,表示該位顧客的期望值,偏好值,和可以選擇菜品區間。1

<=n

<=2

×105

,0

<=a

i,bi

,xi<

105,

1<=l

i<=r

i<=n

(1

<=i

<=m

);

1<=m

<=1

05

1<=n<=2×10^5,0<=ai,bi,xi<10^5,1<=li<=ri<=n(1<=i<=m);1<=m<=10^5

1<=n

<=2

×105

,0<=a

i,bi

,xi<

105,

1<=l

i<=r

i<=n

(1<=i

<=m

);1<=m

<=1

05【輸出】

輸出 m 行,每行 1 個整數,ymax ,表示該位顧客選擇的最美味的菜的美味值。

顯然地,如果沒有x

ix_i

xi​,我們可以直接在可持久化trie上按位貪心即可。這道題似乎也可以用可持久化trie實現,不過不太方便。我們可以用主席樹代替可持久化trie。按位貪心,每次查詢使當前位為1的對應區間是否有數存在,否則當前位只能為0。這個主席樹上需要查詢的區間可以用當前已經確定的答案的字首確定。而主席樹查詢時就可以很方便地考慮x

ix_i

xi​。

**:

#include

#define re register

using

namespace std;

const

int n=

2e5+5;

int n,m,ch[n*20|

1][2

],tot=

1,rt[n]

=,siz[n*20|

1],a,b,x,l,r,ans;

inline

intred()

inline

intlc

(const

int&x)

inline

intrc

(const

int&x)

intchange

(int v,

int l,

int r,

const

int&pos)

bool

query

(int u,

int v,

int l,

int r,

const

int&ql,

const

int&qr)

intmain()

}

SCOI2016 背單詞 Trie樹,貪心

題目鏈結 首先吐槽一波原題意,描述地太不清楚了,還是出題人想要出語文斷句題?題目鏈結是團隊考試的題,題意重置版。顯然我們要避免那種 i i 的情況,因為這樣非常不划算,i 2 i i j 那我們來看看能不能安排乙個合法的順序來規避這個情況。顯然是可以的,因為如果我們按照字尾關係連邊,它會形成乙個 d...

P3293 SCOI2016 美味 主席樹好題

題目描述 一家餐廳有 n 道菜,編號 1 n 大家對第 i 道菜的評價值為 ai 1 i n 有 m 位顧客,第 i 位顧客的期望值為 bi,而他的偏好值為 xi 因此,第 i 位顧客認為第 j 道菜的美味度為 bi xor aj xi xor 表示異或運算。第 i 位顧客希望從這些菜中挑出他認為最...

洛谷P3293 SCOI2016 美味(主席樹)

傳送門 據說這題做法叫做可持久化trie樹?然而我並不會 首先考慮一下貪心,從高位到低位列舉,如果能選1肯定比選0優 假設已經處理到了 b 的第 i 位,為1 為0的話同理就不說了 那麼只有當 a j x 的第 i 位為0時才能讓答案的第 i 位為 1 考慮把 x 的影響去掉。如果當前的答案是 an...