n 個數的陣列,其中恰好有 k 個數出現了奇數次。把他們找出來。
n<=3e6, k<=2
空間 2m
k=1 直接全部異或起來。
k=2 ,假設出現奇數次的是 a 和 b,那麼把所有數異或起來得到的就是 s=a^b。
對每個二進位制位維護乙個數 w[i],當讀入乙個 x,x 的第 j 位為 1 的時候,就把 w[j]^=x。
對於 s 的最高位的 1,那麼一定是 a 和 b 之中,乙個這一位為 1,乙個這一位為 0。假設是第 j 位,那麼 w[j] 肯定就是其中乙個數。
#include
#include
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
using
namespace
std;
int n,k,xsum,xw[35];
int main()}}
LOJ 6087 毒瘤題 (數論)
題目大意 在集合中找出 k k 2 個出現了奇數次的正整數 a。注意記憶體 2mb 當k 1的時候,我們可以對所有的數求異或和,得到的異或和即為a,因為出現偶數次的都兩兩消掉了。k 2的時候,我們得到的異或和是a b。對於二進位制的每一位維護cnt i 表示有多少數二進位制的第i位中1,c i 表示...
LOJ6303 水題 題解
題目來自loj。就記乙個公式,設f n,k 為n 裡分解得到的k k為質數 的個數,則f n,k f n k,k n k。證明很好證,顯然我們要的只有k,k 2,k 3 這樣的數有n k個,然後往下遞迴即可。至於k為合數,就質因數分解做就行。k的質因子最多o logk 個,遞迴顯然是o logn 的...
7 14的某毒瘤題 維護佇列題解
傳送 思路by lyd,ych 我們參考選擇客棧的思路,設pre i 是i前面乙個和i顏色相同的畫筆,col i 記錄i的顏色 我們發現,當pre i 我們的問題是區間 l,r 中有多少不同的顏色,也就是統計區間 l,r 中有多少顏色是第一次出現 這樣查詢就被我們切掉了 然後就是令人崩潰的修改。我們...