題解 方塊染色 容斥原理 巧妙分類

2022-02-23 19:51:39 字數 861 閱讀 6464

剛開始以為是道容斥,寫了這個錯誤程式

int main()

if((t-m)&1) delta=mod-delta;

ans=(ans+delta)%mod;

}printf("%d\n",ans);

}return 0;

}

這顯然是錯的,容斥套容斥,我不知道為什麼我敢交上去(可能是對了樣例)

後來我通過仔(bai)細(du)思(ti)考(jie)獲得了啟示

設\(dp(n)\)為\(n\)個時的方案數

假如我已經知道前面\(n-1\)的方案,現在要知道\(n\)的方案了,怎麼做?

顯然地,肯定有乙個\(2dp(n-1)\)的貢獻,意思是在後面加上乙個塊,什麼顏色無所謂

然後我通過思(ti)考(jie)發現,可以這樣分類:

所以直接遞推:

\[dp(x)=2dp(x-1)+2^-dp(x-m-1)

\]初始條件\(dp(m)=1\)

//@winlere

#include#include#include#includeusing namespace std; typedef long long ll;

inline int qr()

const int maxn=1e5+5;

const int mod=1e9+7;

int bin[maxn],dp[maxn];

int n,m;

int main()

while(~scanf("%d%d",&n,&m))

printf("%d\n",dp[n]);

}return 0;

}

格仔染色(容斥原理)

棋盤是乙個n m的矩形,分成n行m列共n m個小方格。現在萌萌和南南有c種不同顏色的顏料,他們希望把棋盤用這些顏料染色,並滿足以下規定 1.棋盤的每乙個小方格既可以染色 染成c種顏色中的一種 也可以不染色。2.棋盤的每一行至少有乙個小方格被染色。3.棋盤的每一列至少有乙個小方格被染色。4.每種顏色都...

bzoj5306 NTT 容斥原理 染色

description 傳送門 題解 upd 原來這是二項式反演來著qwq 貼一下容斥題的一點點做法.首先顯然先求方案數g i g i g i 表示只有i ii種出現了s ss次的方案數 那怎麼說也要求乙個f i f i f i 表示至少有i ii種出現了s ss次的方案數 f i cm i cn ...

交流 題解(容斥原理 組合數)

在此。給你n nn個字串,其中選擇k kk個,如果合法則將 變成字元 26 2626 個都可以,前提是合法 構成乙個只含小寫字母的字串,求可以變成多少種字串。合法要求 乙個位置上要不只有一種小寫字母,要不是 解法 可以用狀壓dpdp dp或者容斥原理 組合數完成。首先鋪墊三個內容 交集 並集 集合大...