19暑假線性基F

2021-09-25 17:57:03 字數 1308 閱讀 5244

已知乙個長度為n的正整數序列a(下標從1開始), 令 s = , s 的冪集2^s定義為s 所有子

集構成的集合。定義對映 f : 2^s -> zf(空集) = 0f(t) = xor a[t] , 對於一切t屬於t現在albus把2^s中每個集

合的f值計算出來, 從小到大排成一行, 記為序列b(下標從1開始)。 給定乙個數, 那麼這個數在序列b中第1

次出現時的下標是多少呢?

input

第一行乙個數n, 為序列a的長度。接下來一行n個數, 為序列a, 用空格隔開。最後乙個數q, 為給定的數.

output

共一行, 乙個整數, 為q在序列b中第一次出現時的下標模10086的值.

sample input

31 2 3

1sample output

3樣例解釋:

n = 3, a = [1 2 3]

s =

2^s = , , , , , , }

f(空) = 0

f() = 1

f() = 2

f() = 3

f() = 1 xor 2 = 3

f() = 1 xor 3 = 2

f() = 2 xor 3 = 1

f() = 0

所以b = [0, 0, 1, 1, 2, 2, 3, 3]

hint

資料範圍:

1 <= n <= 10,0000

其他所有輸入均不超過10^9

#include#define ll long long

#define maxn 100005

using namespace std;

int n,q,a[maxn];

struct l_b

inline bool insert(int x)

inline void rebuild()

} int kth(int k)

}

return ret;

}};l_b lis;

int id[maxn];

int main ()

scanf("%d",&q);

int r=lis.get_r();

int cnt=0;

int ans=0;

lis.rebuild();

ans=lis.kth(q);

ans%=10086;

for(int i=1;i<=n-r;i++)

printf("%d\n",(ans+1)%10086);

}

19暑假線性基B

input 第一行包含乙個正整數n,表示礦石的種類數。接下來 n行,每行兩個正整數numberi 和 magici,表示這種礦石的元素序號 和魔力值。output 僅包一行,乙個整數 最大的魔力值 sample input 31 10 2 20 3 30 sample output 50hint 由...

19暑假線性基C

第一行包含兩個整數n和 m,表示該無向圖中點的數目與邊的數目。接下來m 行描述 m 條邊,每行三個整數si,ti di,表示 si 與ti之間存在 一條權值為 di的無向邊。圖中可能有重邊或自環。output 僅包含乙個整數,表示最大的xor和 十進位制結果 注意輸出後加換行回車。sample in...

19暑假dp優化

l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內 陸地區 乾燥少雨 l公司一般把產品直接堆放在露天,以節省費用。突然有一天,l公司的總裁l先生接到氣象 部門的 被告知三天之後將有一場暴雨,於是l先生決定緊急在某些工廠建立一些倉庫以免產品被淋壞。由於...