已知乙個長度為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先生決定緊急在某些工廠建立一些倉庫以免產品被淋壞。由於...