題意
傳送門 p3293 [scoi2016]美味
題解求某個數字 x
xx 與集合中任一數字異或的最大值,考慮從高位向低位貪心的選擇與 x
xx 在這一位的異或值對應的數。假設當前已處理好比第 i
ii 位更高的數字,此時區間左界為 lblb
lb,假如 x
xx 的第 i
ii 位為 1
11,那麼選擇的數字應該在區間 [lb
+(
1<
,lb+
(1
<
<(i
+1))
)\big[lb+(1<[l
b+(1
<
,lb+
(1<
<(i
+1))
) 中;若為 0
00,則選擇的數字應該在區間 [lb
,lb+
(1
<
)\big[lb, lb+(1<[l
b,lb
+(1<
) 中。確定 [l,
r]
[l,r]
[l,r
] 道菜中值域在目標區間是否存在數字,使用主席樹即可。時間複雜度 o(n
logn
+mlo
g2n)
o(nlogn +mlog^2n)
o(nlog
n+ml
og2n
)。
#include
#include
#include
#include
using
namespace std;
#define maxn 200005
#define maxt 4000005
#define maxl 20
int n, m, a[maxn]
;int ns, rt[maxn]
, cl[maxt]
, cr[maxt]
, sum[maxt]
;void
insert
(int
&cur,
int pre,
int x,
int l,
int r)
}int
query
(int u,
int v,
int a,
int b,
int l,
int r)
intmain()
while
(m--
)else
}printf
("%d\n"
, res);}
return0;
}
洛谷P3293 SCOI2016 美味
一家餐廳有 n 道菜,編號 1.n 大家對第 i 道菜的評價值為 ai 1 i n 有 m 位顧客,第 i 位顧客的期望值為 bi,而他的偏好值為 xi 因此,第 i 位顧客認為第 j 道菜的美味度為 bi xor aj xi xor 表示異或運算。第 i 位顧客希望從這些菜中挑出他認為最美味的菜,...
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...