CSU 1216 異或最大值 字典樹的應用

2021-08-25 02:51:34 字數 1218 閱讀 6962

題意:給定一些數,求這些數中兩個數的異或值最大的那個值

思路:字典樹的運用,每一次貪心的去找所需要的數字,用ret儲存路上經過節點的資訊

具體看**:

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define eps 1e-8

#define inf 0x3f3f3f3f

#define pi acos(-1)

#define lson l,mid,rt<<1

#define rson mid+1,r,rt<<11

#define clr(x,y) memset((x),y,sizeof(x))

#define ****(x) cerr << #x << "=" << x << endl

using

namespace

std;

typedef

long

long ll;

typedef

unsigned

long

long ull;

const

int seed = 131;

const

int maxn = 1e5 + 5;

const

int mod = 1e9 + 7;

int n, pos; //字典樹節點標號

int trie[maxn][2];

void insert(ll x)

root = trie[root][a];

}}ll a[maxn];

ll find(ll x) else root = trie[root][!need];//不存在的話往樹另一邊走

}return ret;//最後查詢出來的就是兩個數的異或值

}int main()

ll max = 0;

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

printf("%lld\n", max);

}return

0;}

CSU 1216(異或最大值)

csu 1216 題目簡述 經典題目,求乙個陣列中兩個數異或運算的最大值。題目極其簡單,但是要求的複雜度需要達到o n log n 還是比較難的。解題思路 總的思路就是構建一棵0 1字典樹,然後乙個數讓查詢乙個與其異或結果最大的數的效率達到o log n 這裡因為異或的特殊性質,可以使用貪心法則來實...

csu 1216 異或最大值

time limit 2 sec memory limit 128 mb submitted 836 solved 300 給定一些數,求這些數中兩個數的異或值最大的那個值 多組資料。第一行為數字個數n,1 n 10 5。接下來n行每行乙個32位有符號非負整數。任意兩數最大異或值 337 9 14 ...

CSU 1216 異或最大值

題目簡述 經典題目,求乙個陣列中兩個數異或運算的最大值。題目極其簡單,但是要求的複雜度需要達到o n log n 還是比較難的。解題思路 總的思路就是構建一棵0 1字典樹,然後乙個數讓查詢乙個與其異或結果最大的數的效率達到o log n 這裡因為異或的特殊性質,可以使用貪心法則來實現。1 0 1字典...