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 ...
随机推荐
- WebApi 身份认 Basic基础认证
<body> <div style="text-align:center;"> <div>用户名:<input type="te ...
- google mock C++单元测试框架
转:google mock C++单元测试框架 2012-03-12 09:33:59 http://blog.chinaunix.net/uid-25748718-id-3129590.html G ...
- vue 使用vue-video-player播放hls格式视频
安装 vue-video-player 在 “ devDependencies ” 中 安装 videojs-contrib-hls 在“ dependencies ”中 main.js 中 ...
- vue多页面项目搭建(vue-cli 4.0)
1.创建vue项目 cmd命令执行 vue create app (app 自定义的项目名) 一般都会选择后者,自己配置一下自己需要的选项(空格为选中) 这是我个人需要的一些选项,路由Router.状 ...
- ECMAScript5面向对象技术(2)--函数
在JavaScript中,函数其实就是对象.使函数不同于其他对象的决定性特点是函数存在一个被称为[[Call]]的内部属性.内部属性无法通过代码访问而是定义了代码执行时的行为.ECMAScript为J ...
- Vue父组件向子组件传递方法(自定义方法)并且子组件向父组件传递数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- java,单文件和多文件上传代码范例
上传一个单文件,用request.getFile得到文件(下面的功能是上传到阿里云) @RequestMapping(value = {"/content"}, method = ...
- JAVA笔记整理(六),JAVA中的多态
JAVA引用变量有两个类型:一个是编译时类型,一个运行时类型 编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定.如果编译时类型和运行时类型不一样,就形成了多态. 因为子类其 ...
- python之匿名函数、递归与二分法
一.匿名函数 什么是匿名函数? 顾名思义就是没有名字的函数,在我们声明一个函数时会想起个什么函数名好,这个问题我想有时候会困惑大家的吧? def func(): #正常函数声明 pass prin ...
- 《Python编程:从入门到实践》第二章 变量和简单数据类型 习题答案
#2.1 print("Hello world!"); #2.2 message="Hello,Python!"; print(message); #2.3 n ...