思路 字典樹
顯然不能列舉所有的點求兩兩見的異或值, 我們知道表示為二進位制時 當兩數字不同時是其異或值才為1 ,由此可得到o(n)的演算法,
先將所有數存進字典樹中(便於快速查詢), 當用乙個數去和其他數異或時,可直接根據貪心策略(盡量選不同的數字)得到最大異或值。
**1
#includeint n,m;
struct haha
node[100005*4];
int pos;
int makend()
void _insert(int x)
int main()
return 0;
}
**2
#include #include #include using namespace std;
int a[100005];
int main()
}if(flag)
break;
}if(flag)
printf("yes\n");
else
printf("no\n");
}return 0;
}
找出一堆數中個數超過一半的數
問題描述 一堆數 例如6,2,2,6,3,4,6,6,6,6 總共10個,其中 6 的個數超過總數的一半5,找出這個個數超過過半的那個數。思路 從頭到尾遍歷,兩個數相同接著往後遍歷 否則刪掉這兩個數,接著往後遍歷。因為所找的那個數過半,所以不同的數相抵,抵消掉最後還會至少剩下乙個那個要找的數。圖示 ...
一堆數裡邊只有乙個出現奇數次的數,其他都出現偶數次
這是我們乙個學長出的一道題,說一堆數裡邊只有乙個出現奇數次的數,其他都出現偶數次 讓你用時間複雜度為on的演算法找出這個數。我看到的乙個簡單的方法是 開始定義乙個a 0,每輸入乙個數就跟a異或,即a a n 假設輸入數的變數是n 這樣最後得到的a就是出現奇數次的那個數 仔細想想確實是這樣,異或 相同...
求一堆數中出現次數最多的那個數的次數
時間限制 2 sec 記憶體限制 128 mib special judge no 提交 170 答案正確 28 提交狀態 我的提交 討論區 恭喜南陽理工學院獲得全國最佳生態校園。南陽理工學院最近又上新聞了,全國遊客紛紛慕名而來,但是南陽理工學院可不能隨便進,因為裡面有獅子和柿子。除了獅子,南陽理工...