題意:
給定n個個數s1, s2… sn,求最大的(si+sj)^sk且滿足(i!=j!=k)。
題解:
很明顯的一道字典樹題目,把每個數都插入字典樹,枚舉兩個數的和。考慮到可能會有重復的數,每次枚舉到i,j時首先在字典樹上刪除 si 和 sj 然後再查詢 si+sj 。
代碼:
#include
#include
#include
#include
using namespace std;
int n,m,tot,T,cnt[70005];
int tr[70005][2],s[1005];
void init(int i)
{
tr[i][1]=tr[i][0]=0;
cnt[i]=0;
}
void add(int x,int id)
{
int now=0;
for (int i=31;i>=0;i--)
{
int p=0;
if (((1<=0;i--)
{
int p=1;
if (((1<