p哥的桶
題意:
給你 m 個位置和 n 次操作,操作有兩種型別 :
操作一 : 表示在區間[l , r]中選擇任意個位置,使這些位置中的數的異或和最大。
操作二 : 在位置 k 加入乙個數x(每個位置可以有多個數)。
思路:
單點修改 + 區間查詢首先考慮線段樹 , 異或和最大考慮線性基。我們可以用線段樹的每個節點表示這個區間的線性基,在修改的時候把每個包含這個位置的區間都插入一遍這個數就好了。然後查詢可以把小區間的線性基合併到大區間,再根據這個大區間的線性基求解。
**:
#include
using
namespace std;
typedef
long
long ll;
const
int maxn=
1e6+7;
const
int mod =
998244353
;int n,m;
ll sum[maxn][33
];ll ans[33]
;void
update
(int pos,
int val,
int l,
int r,
int rt)
else}}
if(l == r)
int mid =
(l + r)/2
;if(pos <= mid)
update
(pos , val , l , mid , rt <<1)
;if(pos > mid)
update
(pos , val , mid +
1, r , rt <<1|
1);}
void
query
(int l,
int r,
int l,
int r,
int rt)
else}}
}return;}
int mid =
(l + r)/2
;if(l <= mid)
query
(l , r , l , mid , rt <<1)
;if(r > mid)
query
(l, r, mid +
1,r,rt <<1|
1);}
intmain()
else
printf (
"%lld\n"
,val);}
}}
洛谷P4839 P哥的桶 線段樹 線性基
傳送門 題意 n個操作,第k個桶放乙個x,查詢l到r區間的桶任意數的異或最大值。p哥時不時地會找新女朋友,並把新找的女朋友丟進某個桶裡面。我們用 1 k x 來表示p哥找了乙個顏值為x的女朋友,並且丟進了k號桶裡面 p哥每天晚上需要在特定的桶裡面找一些女朋友觀賞。我們用 2 l r 來表示p哥在l號...
洛谷 P哥的桶(線段樹 線性基)
p哥在ioi取得了金牌,現在他開始找女朋友了!p哥現在有nn個桶,他們排成了一排,這些桶可以裝下任意多個女朋友。每個女朋友有乙個固定的顏值 p哥時不時地會找新女朋友,並把新找的女朋友丟進某個桶裡面。我們用1 k x1kx來表示p哥找了乙個顏值為xx的女朋友,並且丟進了kk號桶裡面 p哥每天晚上需要在...
線段樹2 洛谷p3373 線段樹
題目位址 解釋 多了乙個乘法操作,可以考慮優先順序。每次先算乘法。首先,對於乙個區間 和為s 假設已經按 a 乘b進行了操作。值得到的值為 s a b sb ab 假設先乘得到 sb a 這樣相比,add應該還要再乘上乙個b才對,所以,當更新到乙個區間時,為了進行先乘的操作而不讓結果發生變化,應該將...