bzoj2844 albus就是要第乙個出場

2022-03-26 00:12:18 字數 956 閱讀 5212

傳送門:

【題解】

考慮$n$個數組成的基,大小為$k$,那麼每種方案都有$2^$可以取到。

觀察樣例也能發現這個結論。

然後就是正常的線性基統計,最後乘乙個$2^$,加一即可。

# include # include 

# include

# include

//# include

using

namespace

std;

typedef

long

long

ll;typedef

long

double

ld;typedef unsigned

long

long

ull;

const

int n = 1e5 + 10, lg = 30

;const

int mod = 10086

;# define bit(x, i) (((x) >> (i)) & 1

)int

n, a[n], m, t;

int l[lg + 5], lbase[lg + 5

];int ans = 0

;

intmain()

t ^=lbase[j];}}

m = 0

;

for (int i=0; i<31; ++i) if(lbase[i]) l[++m] =i;

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

for (int i=n-m; i>=1; --i)

++ans; if(ans >= mod) ans -=mod;

cout

<< ans <

return0;

}

view code

BZOJ2844 albus就是要第乙個出場

傳送門 給定乙個含 n 個自然數的集合s,將 2s中所有集合的所有元素的異或和從小到大排列 下標從 1 開始 求ta r在其中第一次出現的下標 保證給出的數出現過 對 10086 取模.1 n 105 ai 109.首先tar 0的情況最好先特判掉.然後我們要求的是從 s 中取若干元素 可以不取 異...

bzoj 2844 albus就是要第乙個出場

首先就是乙個線性基。然後不能放進去的相當於0,然後列舉前多少位和m相同,那麼後一位比m小的方案累加入答案即可。ac 如下 include define mod 10086 using namespace std int n,m,cnt,bin 35 bs 35 s 35 bool ins int x...

BZOJ2844 albus就是要第乙個出場

給出a陣列,共有n個數,你可以選其中一些出來xor 至少乙個數 所以可能的xor結果值排序後去重,問你排在第k個的結果值是多少.線性基有個性質 線性基內任意集合異或結果唯一,而所有數異或0還是本身 所以每個數字出現的個數就等於 1 異或值為0的集合個數 2 n cnt 所以問題就轉化為求線性基有效位...