albus就是要第乙個出場

2021-10-05 23:39:39 字數 702 閱讀 5055

點此看題

首先考慮沒有重複(序列個數等於線性基個數)的情況,那麼問題就是求乙個值的排名(跟求排名的值差不多)

ii位被異或為0

00,那我們就把這個值歸類到i

ii位,設有w

ww個多餘的值。如果乙個位置被選取了,那麼選奇數個數的子集方案數2

w2^w

2w,否則可以選當前位沒有被選取,那麼選偶數也是2

w2^w

2w,總方案數就是2n−

m2^

2n−m

,m

mm是重複的個數。

**也就不難了,仿照求排名的值。

#include

#define int long long

const

int jzm =

10086

;int

read()

int n,m,k,ans,p[40]

;void

ins(

int x)

x^=p[i];}

if(!x) m=m*

2%jzm;

}void

work()

signed

main()

printf

("%lld\n"

,(ans*m+1)

%jzm)

;}

Luogu 4869 albus就是要第乙個出場

bzoj 2844 被noip模擬賽題弄自閉了quq。因為本題要求異或,所以自然地構造出線性基,假設本題中給出的數有 n 個,而我們構造出的線性基大小為 m 那麼每乙個可以異或出來的數相當於出現了 2 次。可以把那些已經存在於異或空間中的數看成 0 因為我們一共能憑湊出 2 m 個不同的異或值,剩下...

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...