UOJ UNR 2 黎明前的巧克力

2022-09-16 22:15:21 字數 986 閱讀 1630

傳送門很奇妙的一道題

首先不難發現乙個暴力做法,就是f[i]表示異或和為i的答案數,每次fwt上乙個f陣列,其中f[0]=1,f[ai]=2,最後輸出f[0]即可。

這樣我就考慮從fwt之後的陣列入手。

首先發現f[0]=1只會讓最後的陣列全部+1,所以只考慮f[ai]=2的影響。

發現每個項只會是3或者-1,這取決於fwt過程中的取反次數。

所以可以設計乙個dp,f[i][x]表示分治到第i層,x是2的方案數,f[i][x]表示....,x是-2的方案數。

這樣模擬fwt進行dp即可,最後通過快速冪計算出變換後最終的陣列,再逆變換回去就是答案啦。

#include#include

#include

#define mn 1048576

#define mod 998244353

using

namespace

std;

inline

intread()

const

int inv2=(mod+1)/2

;int s[mn+5],s[mn+5],n,f[22][mn+5],f[22][mn+5],num[mn+5

],sum;

inline

int pow(int x,int

k)void fwt(int l,intr)}

void solve(int l,int r,int

dep)

int mid=l+r>>1;solve(l,mid,dep+1);solve(mid+1,r,dep+1

);

for(int i=0;i<=mid-l;++i)

}int

main()

fwt(

0,mn-1

); printf(

"%d\n

",(s[0]-1+mod)%mod);

return0;

}

C UNR 2 黎明前的巧克力

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

UNR 2 黎明前的巧克力

解題思路 考慮乙個子集 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 ...

uoj 310 UNR 2 黎明前的巧克力

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