傳送門很奇妙的一道題
首先不難發現乙個暴力做法,就是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 不...