日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

P6076-[JSOI2015]染色问题【组合数学,容斥】

發布時間:2023/12/3 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P6076-[JSOI2015]染色问题【组合数学,容斥】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

題目鏈接:https://www.luogu.com.cn/problem/P6076


題目大意

給出n?mn*mn?m的網格,ccc種顏色涂色要求

  • 每個格子可以染色也可以不染
  • 每一行每一列至少有一個格子被染
  • 每個顏色至少用一次
  • 1≤n,m,c≤4001\leq n,m,c\leq 4001n,m,c400


    解題思路

    一個比較簡單的方法就是容斥,枚舉有多少染色的和不染色的行列,和枚舉使用的顏色個數
    ∑i=0c∑j=0n∑k=0m(ci)(nj)(mk)(i+1)j+k(?1)c+n+m?i?j?k\sum_{i=0}^c\sum_{j=0}^n\sum_{k=0}^m\binom{c}{i}\binom nj\binom mk(i+1)^{j+k}(-1)^{c+n+m-i-j-k}i=0c?j=0n?k=0m?(ic?)(jn?)(km?)(i+1)j+k(?1)c+n+m?i?j?k

    這樣預處理就是O(nmc)O(nmc)O(nmc)的,但是可以做到更快。

    fif_ifi?表示最多染了iii種顏色的方案,那么久只需要滿足第二個條件了。第二個條件可以用一個容斥搞定,考慮枚舉多少行沒染
    fk=∑i=1n(?1)n?i((k+1)m?1)if_k=\sum_{i=1}^n(-1)^{n-i}((k+1)^{m}-1)^ifk?=i=1n?(?1)n?i((k+1)m?1)i
    這樣預處理就可以做到O(nc)O(nc)O(nc)

    這里寫的是第一種,因為比較懶


    code

    #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll N=410,P=1e9+7; ll n,m,c,C[N][N],pw[N*N],ans; signed main() {scanf("%lld%lld%lld",&n,&m,&c);C[0][0]=1;for(ll i=1;i<N;i++)for(ll j=0;j<N;j++)C[i][j]=(C[i-1][j]+(j?C[i-1][j-1]:0))%P; for(ll i=0;i<=c;i++){pw[0]=1;for(ll j=1;j<=n*m;j++)pw[j]=pw[j-1]*(i+1)%P;for(ll j=0;j<=n;j++)for(ll k=0;k<=m;k++){ll f=(c-i)+(n-j)+(m-k);if(f&1)f=-1;else f=1;(ans+=f*C[n][j]*C[m][k]%P*C[c][i]%P*pw[j*k]%P)%=P;}}printf("%lld\n",(ans+P)%P);return 0; }

    總結

    以上是生活随笔為你收集整理的P6076-[JSOI2015]染色问题【组合数学,容斥】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。