傳送門:
【題解】
考慮$n$個數組成的基,大小為$k$,那麼每種方案都有$2^$可以取到。
觀察樣例也能發現這個結論。
然後就是正常的線性基統計,最後乘乙個$2^$,加一即可。
# include # includeview code# 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;
}
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 所以問題就轉化為求線性基有效位...