codeforces#1228E. Another Filling the Grid(容斥定理,思维)
题目链接:
https://codeforces.com/contest/1228/problem/E
题意:
给n*n的矩阵填数,使得每行和每列最小值都是1
矩阵中可以填1到$k$的数
数据范围:
$1\leq n \leq 250$
$1\leq k \leq 250$
分析:
参考博客:https://www.cnblogs.com/scx2015noip-as-php/p/cf589e.html
先预处理出f(x)代表x*n的矩阵,每列最小值是1的填充方案数
以下讨论的方案数,列的最小值一定是1
ans=随便填-第一行没有1-第二行没有1-第三行没有1-第n行没有1+第一二行没有1+第二三行没有1......
也就是对行的方案容斥
因为第一行没有1和第二行没有1的方案可能重复了,所有多减了一些方案数
$ans = \sum\limits_{i=0}^n (-1)^i C_n^i (k-1)^{ni} f(n-i)$
AC代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=250+7;
const int mod=1e9+7;
ll A[maxn],invA[maxn],f[maxn];
ll qpow(ll x,ll y){
ll res=1;
while(y){
if(y&1)res=x*res%mod;
x=x*x%mod;
y/=2;
}
return res;
}
int main()
{
int n,k;
A[1]=invA[1]=A[0]=invA[0]=1;
for(int i=2;i<maxn;i++){
A[i]=A[i-1]*i%mod;
invA[i]=invA[i-1]*qpow(i,mod-2)%mod;
}
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++)
f[i]=qpow((qpow(k,i)-qpow(k-1,i)+mod)%mod,n);
ll res,ans=0;
for(int i=0;i<n;i++){
if(i%2==0)res=1;
else res=-1;
res=res*f[n-i];
res=res*qpow(k-1,n*i)%mod;
res=res*A[n]%mod*invA[i]%mod*invA[n-i]%mod;
ans=(ans+res+mod)%mod;
}
printf("%lld\n",ans);
return 0;
}
codeforces#1228E. Another Filling the Grid(容斥定理,思维)的更多相关文章
- [Codeforces 1228E]Another Filling the Grid (排列组合+容斥原理)
[Codeforces 1228E]Another Filling the Grid (排列组合+容斥原理) 题面 一个\(n \times n\)的格子,每个格子里可以填\([1,k]\)内的整数. ...
- [Codeforces 1228E]Another Filling the Grid(组合数+容斥)
题目链接 解题思路: 容斥一下好久可以得到式子 \(\sum_{i=0}^{n}\sum_{j=0}^{n}(-1)^{i+j}C_n^iC_n^j(k-1)^{ni+nj-ij}k^{n^2-(ni ...
- Codeforces 1228E. Another Filling the Grid
传送门 看到 $n=250$ 显然考虑 $n^3$ 的 $dp$ 设 $f[i][j]$ 表示填完前 $i$ 行,目前有 $j$ 列的最小值是 $1$ 的合法方案数 那么对于 $f[i][j]$ ,枚 ...
- Codeforces Round #330 (Div. 2) B. Pasha and Phone 容斥定理
B. Pasha and Phone Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/595/pr ...
- HDU 2841 Visible Trees(容斥定理)
Visible Trees Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- HDU 1796How many integers can you find(简单容斥定理)
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- hdu_5213_Lucky(莫队算法+容斥定理)
题目连接:hdu_5213_Lucky 题意:给你n个数,一个K,m个询问,每个询问有l1,r1,l2,r2两个区间,让你选取两个数x,y,x,y的位置为xi,yi,满足l1<=xi<=r ...
- How Many Sets I(容斥定理)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3556 How Many Sets I Time Limit: 2 ...
- HDU - 4135 Co-prime 容斥定理
题意:给定区间和n,求区间中与n互素的数的个数, . 思路:利用容斥定理求得先求得区间与n互素的数的个数,设表示区间中与n互素的数的个数, 那么区间中与n互素的数的个数等于.详细分析见求指定区间内与n ...
随机推荐
- zabbix 数据库分表操作
近期zabbix数据库占用的io高,在页面查看图形很慢,而且数据表已经很大,将采用把数据库的数据目录移到新的磁盘,将几个大表进行分表操作 一.数据迁移: 1.数据同步到新的磁盘上,先停止mysql(不 ...
- Visual Studio中找不到.Net Core SDK
在win 7 64位上安装了.Net Core 2.1 x86 SDK后,又卸载重新安装了.Net Core 3/2 x64 SDK.结果在VS中新建项目时没有.Net Core 3.1 SDK. 在 ...
- MySQL LAST_INSERT_ID()用法
last_insert_id()函数是适用于id为自动生成的表 下面是插入表数据时last_insert_id()函数的两种用法: 表结构: 此表使用last_insert_id()函数的字段为par ...
- 理解Java序列化中的SerialVersionUid
一.前言 SerialVersionUid,简言之,其目的是序列化对象版本控制,有关各版本反序列化时是否兼容.如果在新版本中这个值修改了,新版本就不兼容旧版本,反序列化时会抛出InvalidClass ...
- 解决 VUE项目过大nodejs内存溢出问题
今天在启动vue项目的时候报了这样一个错误, 如图所示:频繁出现此种情况,项目太大,导致内存溢出,排除代码问题外,可参照以下方式解决 // 全局安装increase-memory-limit npm ...
- iOS 数据源切换混乱问题
问题场景 这个问题遇到是偶然的,正常来说是不会出现的.但是有时候在一些极端操作情况下,还是出现了. 现在我说明下这个场景.页面上是一个tableview,那对应的有一个dataSource,页面顶部有 ...
- [#Linux] CentOS 7 应用程序添加快捷方式到桌面
在centos使用中,会发现应用程序只能到eclipse的目录中执行eclipse的脚本去启动.这样很不方便. 查阅资料后找到了解决方案: 1.通过命令行,进入到桌面文件夹中 cd /home/you ...
- 定制centos6.5自动安装ISO光盘
一 ISO定制项清单 安装系统为centos6.5 (base server),安装方式为全新安装 使用ext4分区格式 安装前可以交互输入root密码,主机名,swap分区大小,之后安装过程自动化 ...
- Win10安装MySQL5.7版本 解压缩版方法
1.下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 直接点击下载项 下载后: 2.可以把解压的内容随便放到一个目录,我的是如 ...
- fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map
作者:buster2014 推荐:长安散人 fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map JSON字符串与Java对象的转换 1.将Java对象或Java ...