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 ...
随机推荐
- Windows终端命令行工具Cmder
在IT这一行,大部分情况下都是推荐大家使用Linux或者类Unix操作系统去编程,Linux作为一代优秀的操作系统,已经人尽皆知,在IT行业已经成为核心.有条件的大佬都选择了使用mac编程,最优秀的莫 ...
- windows下批处理保留指定日期下的文件
@echo offchcp 65001setlocal enabledelayedexpansion ::设置操作路径set "pic_dir=D:\465"echo 开始清理.. ...
- Windows下编译 Hadoop
Windows下编译 Hadoop-2.9.2 系统环境 系统: Windows 10 10.0_x64 maven: Apache Maven 3.6.0 jdk: jdk_1.8.0_201 Pr ...
- jQuery遍历(2)
上期我们讲了遍历的祖先和后代的问题,现在我们讲讲遍历同胞 同胞拥有相同的父元素. 通过 jQuery,您能够在 DOM 树中遍历元素的同胞元素. jQuery siblings() 方法 siblin ...
- [LeetCode] 342. 4的幂 ☆(是否4 的幂)
描述 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16输出: true示例 2: 输入: 5输出: false 进阶:你能不使用循环或者递归 ...
- java基础点
1.eclipse什么时候编译java类文件 2.在同一包中的类可以相互引用,无需用import语句 3.在Java eclipse用ALT输入特殊符号 4.if else等语句,什么时候可以不加括号 ...
- c# 输出参数-out
- 【OF框架】在Visual Studio中发布Docker镜像,推送镜像到Azure容器注册表
准备 拥有Azure账号,已经创建 Azure容器注册表,获得注册表地址.账号.密码 本地已经在Visual Studio登录Azure账号. 本地已经拥有Docker环境 注意:首次发布Docker ...
- Vue中的button事件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Django之路——2 Django的安装
Django的安装分为两种方式,一种是命令行安装,另外一种是pycharm安装.在这里只说一种在命令行里面安装的 1.命令行安装 这个自不必多说,直接上干货,如果遇到pip版本过低,安装失败的,请自自 ...