题意
有 n n n 堆石子,每堆石子的数量在 [ l , r ] [l,r] [l,r] 之间,有 m m m 个特殊的数 S i S_i Si,两个人轮流取石子,每次可以在一堆石子中取走 x x x 个石子,满足 μ x = 1 o r x ∈ S \mu_x=1~or~ x\in S μx=1 or x∈S。求后手必胜的方案数。
其中, 1 ≤ n ≤ 1 0 6 , 1 ≤ l ≤ r ≤ 1 0 5 , 1 ≤ m ≤ 5 1\le n\le 10^6,1\le l\le r\le 10^5,1\le m\le 5 1≤n≤106,1≤l≤r≤105,1≤m≤5。
分析
经过出题人的打表,每个数的 s g sg sg 值不超过 230 230 230。
因此,考虑用 b i t s e t bitset bitset 优化求 s g sg sg 函数。
令 o p t = { x ∣ μ x = 1 o r x ∈ S } opt=\{x|\mu_x=1~or~ x\in S\} opt={
x∣μx=1 or x∈S}。再开 230 230 230 个 b i