題意:給定一些數,求這些數中兩個數的異或值最大的那個值
思路:字典樹的運用,每一次貪心的去找所需要的數字,用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字典...