Codeforces Round #589 (Div. 2)-E. Another Filling the Grid-容斥定理
2024-10-21 15:55:12
Codeforces Round #589 (Div. 2)-E. Another Filling the Grid-容斥定理
【Problem Description】
在\(n\times n\)的格子中填入\([1,k]\)之间的数字,并且保证每一行至少有一个\(1\),每一列至少有一个\(1\),问有多少种满足条件的填充方案。
【Solution】
令\(R[i]\)表示为第\(i\)行至少有一个\(1\)的方案数,\(C[i]\)表示第\(i\)列至少有一个\(1\)的方案数。则题目要求的就是\(\bigcap_{i=1}^nR[i]\cap C[i]\)。由容斥定理得:
\[\sum_{i=0}^{n} \sum_{j=0}^{n} (-1)^{i+j} \cdot {n\choose j} \cdot {n\choose i} \cdot k^{n^2 - n \cdot (i+j) + i \cdot j} \cdot (k-1)^{n \cdot (i+j) - i \cdot j}
\]
\]
表示从\(n\)行中,选\(i\)行,从\(n\)列中选\(j\)列,选出\(n\cdot(i+j)-i\cdot j\)个格子不能放\(1\),这些格子有\((k-1)^{n\cdot (i+j)-i\cdot j}\)种放置方案,剩余的\(n^2-n\cdot (i+j)+i\cdot j\)有\(k^{n^2-n\cdot (i+j)+i\cdot j}\)种放置方案。
【Code】
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef int Int;
#define int long long
#define maxn 1005
#define INF 0x3f3f3f3f
const int mod=1e9+7;
int bit[maxn][maxn];
int fpow(int a,int b){
int ans=1;a%=mod;
while(b){
if(b&1) (ans*=a)%=mod;
(a*=a)%=mod;
b>>=1;
}
return ans;
}
Int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int n,k;cin>>n>>k;
for(int i=0;i<=n;i++) bit[i][0]=1;
for(int i=1;i<=n;i++){ //预处理组合数
for(int j=1;j<=i;j++){
bit[i][j]=(bit[i-1][j]+bit[i-1][j-1])%mod;
}
}
int ans=0;
for(int i=0;i<=n;i++){ //直接套公式即可
for(int j=0;j<=n;j++){
ans+=((i+j)&1?-1:1)*bit[n][i]%mod*bit[n][j]%mod*fpow(k,n*n-n*(i+j)+i*j)%mod*fpow(k-1,n*(i+j)-i*j)%mod;
ans%=mod;
}
}
cout<<(ans+mod)%mod<<endl;
return 0;
}
最新文章
- 求两圆相交部分面积(C++)
- SharePoint 根据时间筛选
- oc string
- miniui中常用的状态显示方式
- 深入GetMessage和PeekMessage
- HDU 1392 Surround the Trees 构造凸包
- python 学习资料
- Android 最火高速开发框架AndroidAnnotations使用具体解释
- 利用cocoapods创建基于git的私有库
- 我的第一个python web开发框架(12)——工具函数包说明(三)
- DOS下串口通信程序来传送文件的源代码
- 前端JS 与 后台C# 之间JSON序列化与反序列化(笔记)
- C#解析XML 例子二
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- java poi导入Excel(个人代码)
- PC端、移动端的页面适配及兼容处理
- UWP开发细节记录:IStream 和 IRandomAccessStream^ 以及 IMFByteStream 互转
- exception keynote
- java基础题目日常思考(持续更新)
- 从api接口获取数据-okhttp
热门文章
- nvm安装、解决nvm command not found问题、卸载
- appium 弹窗处理
- C#中数组、集合(ArrayList)、泛型集合List<;T>;、字典(dictionary<;TKey,TValue>;)全面对比
- 【LeetCode】最长回文子串【动态规划或中心扩展】
- Apache Kafka工作流程| Kafka Pub-Sub Messaging
- C语言单链表简单实现(简单程序复杂化)
- (转)nginx与PHP的关系
- Java多线程系列——锁的那些事
- Spark 系列(一)—— Spark简介
- Jupyter交互式工具安装使用