洛谷P4839 P哥的桶 線段樹 線性基

2021-09-26 00:26:22 字數 1067 閱讀 8908

傳送門

題意:n個操作,第k個桶放乙個x,查詢l到r區間的桶任意數的異或最大值。

p哥時不時地會找新女朋友,並把新找的女朋友丟進某個桶裡面。我們用 1 k x 來表示p哥找了乙個顏值為x的女朋友,並且丟進了k號桶裡面

p哥每天晚上需要在特定的桶裡面找一些女朋友觀賞。我們用 2 l r 來表示p哥在l號桶到r號桶之間找女朋友。p哥希望觀賞的女朋友顏值異或和盡可能大。

#include#include#include#include#include#define ll long long

using namespace std;

const int maxn=5e4+10;

struct node

void ins(int x)

else

x^=d[i];

}} }

}a[maxn<<2];

node merge(node u,node v)

return u;

}node query(int l,int r,int l,int r,int rt)

node tt;

int mid=(l+r)/2;

if(l<=mid)

tt=merge(tt,query(l,r,l,mid,rt<<1));

if(r>mid)

tt=merge(tt,query(l,r,mid+1,r,rt<<1|1));

return tt;

}void update(int u,int l,int r,int rt,int x)

int mid=(l+r)/2;

if(u<=mid)

update(u,l,mid,rt<<1,x);

else

update(u,mid+1,r,rt<<1|1,x);

a[rt]=merge(a[rt<<1],a[rt<<1|1]);

}int qmax(node tt)

return ans;

}int main()

else

}return 0;

}

洛谷 P4839 P哥的桶 (線段樹維護線性基)

p哥的桶 題意 給你 m 個位置和 n 次操作,操作有兩種型別 操作一 表示在區間 l r 中選擇任意個位置,使這些位置中的數的異或和最大。操作二 在位置 k 加入乙個數x 每個位置可以有多個數 思路 單點修改 區間查詢首先考慮線段樹 異或和最大考慮線性基。我們可以用線段樹的每個節點表示這個區間的線...

洛谷 P哥的桶(線段樹 線性基)

p哥在ioi取得了金牌,現在他開始找女朋友了!p哥現在有nn個桶,他們排成了一排,這些桶可以裝下任意多個女朋友。每個女朋友有乙個固定的顏值 p哥時不時地會找新女朋友,並把新找的女朋友丟進某個桶裡面。我們用1 k x1kx來表示p哥找了乙個顏值為xx的女朋友,並且丟進了kk號桶裡面 p哥每天晚上需要在...

洛谷 P1047 校門外的樹 線段樹版

第一次脫離模板寫線段樹題目 洛谷的線段樹模板題太 了 言歸正傳,這是乙個未完成版的線段樹,因為一直到最後都沒有發現為什麼第一組資料會wa.後來苦心研究之後,發現線段樹處理0的時候會有問題,於是想了兩個解決辦法應對該情況。這個題目唯一的坑點在於從0開始,意思是輸入的500實質上有501棵樹,而線段樹的...