UNR 2 黎明前的巧克力

2022-03-31 15:52:38 字數 1343 閱讀 8786

解題思路

考慮乙個子集 \(s\) 的異或和如果為 \(0\) 那麼貢獻為 \(2^\) ,不難列出生產函式的式子,這裡的卷積是異或卷積。

\[[x^0]\prod_^ (2x^+1)

\]因為每一項只有兩項 \(x^0,x^\) 有值,記 \(f_i(x) =2x^+1\), \(f'_i(x)=\textf(x)\) ,有

\[f_i'(x)=\sum_ (1+2\times(-1)^)x^s

\]不難發現 \(f'_i(x)\) 的每一項不是 \(3\) 就是 \(-1\) 。

這一步比較巧妙,考慮到 \(\text\) 是乙個線性變換,線性變換的和等於和的線性變換,我們對所有多項式求和後 \(\text\) ,可以解方程解出每一項由多少個 \(3\) 和多少個 \(-1\) 構成。

設 \([x^s]f_i(x)\) 由 \(k\) 個 \(-1\) 貢獻得到 \(k =\frac\),然後我們要求所有多項式卷積的 \(\text\) 後的結果,即 \([x^s]=(-1)^k\times3^\) ,最後再 \(\text\) 回去即可。

其實最後是不需要 \(\text\) 的,我們只需要求 \([x^0]f(x)\) 的值,根據 \(\text\) 的式子

\[f_s=\dfrac\sum_(-1)^f'_t

\]所以 \([x^0]f(x)\) 的值就是每一項係數加起來除乙個 \(2^n\) 。

小結 :遇到點值的時候不要只考慮套路,應當多觀察性質。

code

/*program by mangoyang*/

#include #define inf (0x7f7f7f7f)

#define max(a, b) ((a) > (b) ? (a) : (b))

#define min(a, b) ((a) < (b) ? (a) : (b))

typedef unsigned long long ull;

typedef long long ll;

using namespace std;

template inline void read(t &x)

const int n = 2000005, mod = 998244353;

int a[n], n, res;

inline int pow(int a, int b)

int main()

for(int i = 0; i < len; i++)

cout << (1ll * res * pow(len, mod - 2) % mod + mod - 1) % mod << endl;

return 0;

}

uoj 310 UNR 2 黎明前的巧克力

題目描述 題解 考慮到選出的兩個集合的異或值為 0 所以我們可以看做找出集合,其異或值為 0 然後如果這個集合大小是 x 對答案的貢獻就是 2 x 所以我們考慮每個 i 對應乙個多項式 1 2x 只要我們把多項式乘起來即可 我們考慮 fwt 過程中 i 位置上的數對 j 位置的貢獻是數值乘上 1 不...

C UNR 2 黎明前的巧克力

evan 和 lyra 都是聰明可愛的孩子,兩年前,evan 開始為乙個被稱為uoj的神秘的oi組織工作,在 evan 與其他小夥伴的努力下,uoj不僅成了oi界原創比賽的典範,更是因ur這一 難度的存在而舉世聞名。然而今年,隨著 evan 前往世界彼岸,uoj一天天減少著他的活力,而就在oi歷新年...

UOJ UNR 2 黎明前的巧克力

傳送門很奇妙的一道題 首先不難發現乙個暴力做法,就是f i 表示異或和為i的答案數,每次fwt上乙個f陣列,其中f 0 1,f ai 2,最後輸出f 0 即可。這樣我就考慮從fwt之後的陣列入手。首先發現f 0 1只會讓最後的陣列全部 1,所以只考慮f ai 2的影響。發現每個項只會是3或者 1,這...