題解 JSOI2015染色問題

2022-02-27 09:02:28 字數 698 閱讀 6936

好像這個容斥還是明顯的。一共有三個要求,可以用組合數先滿足乙個,再用容斥解決剩下的兩個維。(反正這題資料範圍這麼小,隨便亂搞都可以)。用 \(a[k][i]\) 表示使用 \(k\) 種顏色,至少有 \(i\) 列沒有染色的方案數,可以容斥預處理得到使用 \(k\) 種顏色染色使得每行每列均被染色的方案數。然後再容斥一下保證每種顏色都用上就可以了。

#include using

namespace

std;

#define maxn 500

#define cnst 450

#define int long long

#define mod 1000000007

intn, m, k, ans, f[maxn];

ints[maxn], c[maxn][maxn];

intread()

while(c >= '

0' && c <= '

9') x = x * 10 + c - '

0', c =getchar();

return x *k;

}int qpow(int x, int

timer)

void up(int &x, int y)

void

pre()

int get(int

x)signed main()

JSOI2015 染色問題 題解

傳送門 容斥原理 把三個容斥套一起 我們列舉至少有i ii行沒有染色,至少j jj列沒有染色,至少k kk種顏色沒有用到,那麼剩下 n i m j n i m j n i m j 個格仔每個都有c 1 k c 1 k c 1 k種選擇 可以在剩下c k c kc k種顏色中挑一種,也可以不染色 因此...

JSOI2015 染色問題

傳送門 雖然不是第一反應,不過還是想到了要容斥。題意轉化 需要求滿足 n m c 個條件的方案數。然後我們就列舉三個數 i,j,k 表示當前方案中,至少不用 k 種顏色,至少不塗 i 行 至少不塗 j 列。然後直接組合數算 式子不難看懂 最後容斥即可。那麼寫出來就是 ans sum n sum m ...

題解 JSOI2015 圈地

發現一種地要麼歸 a 要麼歸 b 若相鄰兩塊歸屬不同還有額外代價 那麼 a 買就連源點,b 買就連匯點 總收益加上這些值 中間連代價的雙向邊 答案為總收益減去最小割 include include include include include include const int n 160005 ...