2526 最大異或和(思維題,「異或和最大」)

2021-09-25 16:28:07 字數 869 閱讀 8319

給定nn個數x1…xnx1…xn,請你選擇n個數p1…pnp1…pn,

使得p1<=x1,p2<=x2......p1<=x1,p2<=x2......,並且p1xorp2…pnp1xorp2…pn的

值盡量大。問這個最大的異或和是多少。

n≤100,0≤xi≤109n≤100,0≤xi≤109

收起

第一行乙個正整數 n 。

第二行 n 個非負整數表示 x[1...n] 。

一行乙個數表示答案。
3

2 2 2

3
從每個數的高位開始考慮,如果為1,且答案ans當前該位置為0,

則一定可以得到乙個答案等於ans|該位置,若ans該位置已經為1,那麼

ans後面的位置可以被全部置為1,繼續考慮下乙個數。詳情見**。

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

#define inf 0x3f3f3f3f

using namespace std;

const int n=2e5+100;

const int m=4e5+100;

int arr[n];

int main()

for(int i=1;i<=n;i++){

for(int j=31;j>=0;j--){

if(arr[i]>>j&1){

if(ans>>j&1){

ans|=1

最大異或和

問題描述 給出n個整數,多組詢問求乙個給出的數與這n個數中的乙個數的最大異或的值。輸入格式 第一行乙個整數n,表示有個數字。第二行n個正整數。第三行乙個整數m,表示m個詢問。第四行m個整數,表示m個詢問的整數。輸出格式 共m行,對於每個詢問輸出最大的異或值。輸入樣例 43 5 6 7 31 4 7 ...

最大異或和

展開 題目描述 給定乙個非負整數序列 初始長度為nn。有 mm 個操作,有以下兩種操作型別 a x 新增操作,表示在序列末尾新增乙個數 xx,序列的長度 n 1n 1。q l r x 詢問操作,你需要找到乙個位置 pp,滿足l le p le rl p r,使得 a p oplus a p 1 op...

3261 最大異或和

給定乙個非負整數序列,初始長度為n。有m個操作,有以下兩種操作型別 1 ax 新增操作,表示在序列末尾新增乙個數x,序列的長度n 1。2 qlrx 詢問操作,你需要找到乙個位置p,滿足l p r,使得 a p xor a p 1 xor xor a n xor x 最大,輸出最大是多少。第一行包含兩...