秀秀的照片(photo)
秀秀的照片(photo)
题目描述
华华在和秀秀视频时有截很多图。华华发现秀秀的每一张照片都很萌很可爱。为什么会这样呢?华华在仔细看过秀秀的所有照片后,发现秀秀的照片都具有一个相同的性质。
设秀秀的分辨率为m×nm×n,即在水平方向上每一行有mm个像素,垂直方向上每一列有nn个像素,照片共有m×nm×n个像素。每一个像素都有一个颜色,共有kk种颜色。华华宝宝发现无论是沿着哪两列像素的分界线将秀秀的照片分成左右两半(共有m−1m−1种分法),左右两半不同颜色的种数都是相同的。
华华宝宝把自己的发现告诉了秀秀宝宝。现在秀秀想知道当照片分辨率为m×nm×n,像素颜色种数为kk(不一定kk种颜色都出现)的时候,共有多少张不同的照片满足上面的性质。
由于答案可能很大,你只需输出答案对109+7109+7取模的结果即可。
数据范围
子任务会给出部分测试数据的特点。如果你在解决题目中遇到了困难,可以尝试只解决一部分测试数据。每个测试点的规模及特点如下表:
|
测试点编号 |
nn |
mm |
kk |
|
1 |
n≤4n≤4 |
m≤4m≤4 |
k≤5k≤5 |
|
2 |
n≤10n≤10 |
||
|
3 |
n≤4n≤4 |
m≤10m≤10 |
|
|
4 |
n≤10n≤10 |
k≤10k≤10 |
|
|
5 |
k≤2000k≤2000 |
||
|
6 |
n≤100n≤100 |
m≤100m≤100 |
|
|
7 |
|||
|
8 |
n≤2000n≤2000 |
m≤2000m≤2000 |
|
|
9 |
k≤106k≤106 |
||
|
10 |
solution
坑题,浪费了我好多时间,然后测试垫底了。。
我们考虑边上的两列,他们的颜色数应要相同,且中间的颜色应为他们的交集的子集。
假设中间颜色数为i,两边颜色数为i+j(也就是单独出现j种颜色)
方案数为
意思是先选i颜色,中间每个格子有i种填法
再在剩余的中选j个,再选j个,确定两边
再乘以 i+j个格子填n个物品的方案数·,再忽略格子的顺序(i+j)!,两边配对(^2)
Sij即为第二类斯特林数,表示i个格子放j个物品,且每个格子至少放一个的方案数
如果i单独放一个格子为s[i-1][j-1]
否则为s[i-1][j] 且有j种方法
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 4005
#define ll long long
#define mod 1000000007
using namespace std;
int n,m,k;
ll S[maxn][maxn],jc[1000006],ny[1000006],ans;
ll work(ll a,int num){
ll p=a,wa=1;
while(num){
if(num&1)wa=wa*p;
p=p*p;p%=mod;wa%=mod;num/=2;
}
return wa;
}
ll C(int N,int M){
return jc[N]*ny[M]%mod*ny[N-M]%mod;
}
int main()
{
cin>>n>>m>>k;
int nn=n+n;
S[0][0]=1;
for(int i=1;i<=nn;i++){
for(int j=1;j<=i;j++){
S[i][j]=S[i-1][j-1]%mod+j*S[i-1][j]%mod;
S[i][j]%=mod;
//cout<<S[i][j]<<' ';
}
}
int M=1000000;
jc[0]=1;for(int i=1;i<=M;i++)jc[i]=jc[i-1]*i%mod;
ny[M]=work(jc[M],mod-2);
for(int i=M-1;i>=0;i--)ny[i]=ny[i+1]*(i+1)%mod;
if(m==1){
printf("%lld",work(k,n));return 0;
}
for(int i=0;i<=min(n,k);i++)
for(int j=0;j<=n,k;j++){
if(i+j+j>k)break;if(i+j>n)break;
ll tmp=C(k,i)*C(k-i,j)%mod*C(k-i-j,j)%mod;
tmp=tmp*work(i,(m-2)*n)%mod;
ll t2=S[n][i+j]*jc[i+j]%mod;t2=t2*t2%mod;
ans=ans+tmp*t2%mod;ans%=mod;
}
cout<<ans<<endl;
return 0;
}
秀秀的照片(photo)的更多相关文章
- 洛谷 P3084 [USACO13OPEN]照片Photo 解题报告
[USACO13OPEN]照片Photo 题目描述 农夫约翰决定给站在一条线上的\(N(1 \le N \le 200,000)\)头奶牛制作一张全家福照片,\(N\)头奶牛编号\(1\)到\(N\) ...
- [USACO13OPEN]照片Photo
题目描述 Farmer John has decided to assemble a panoramic photo of a lineup of his N cows (1 <= N < ...
- P3084 [USACO13OPEN]照片Photo (dp+单调队列优化)
题目链接:传送门 题目: 题目描述 Farmer John has decided to assemble a panoramic photo of a lineup of his N cows ( ...
- P3084 [USACO13OPEN]照片Photo
题目描述 农夫约翰决定给站在一条线上的N(1 <= N <= 200,000)头奶牛制作一张全家福照片,N头奶牛编号1到N. 于是约翰拍摄了M(1 <= M <= 100,00 ...
- 洛谷3084 [USACO13OPEN]照片Photo
原题链接 神仙\(DP\)啊... 题解请移步隔壁大佬的博客\(QAQ\) #include<cstdio> using namespace std; const int N = 2e5 ...
- Luugu 3084 [USACO13OPEN]照片Photo
很神仙的dp...假装自己看懂了,以后回来复习复习... 设$f_{i}$表示从$1$到$i$,且$i$这个点必放的最大数量. 一个区间有两个限制条件:至少放一个,至多放一个. 因为一个区间至多要放一 ...
- 【简●解】[USACO] 照片Photo
[简●解][USACO] 照片Photo [题目大意] 在\(1\)~\(N\)的序列上有\(M\)个区间,使得这\(M\)个小区间每个覆盖了且仅覆盖了一个点,求最多点数,如果无解,输出\(-1\). ...
- P3084 [USACO13OPEN]照片Photo dp
题意: 有n个区间,每个区间只能有一个斑点奶牛,问最多有几个斑点奶牛. 思路: 首先要处理出每个点的L[i],R[i]. L[i]表示L[i]-i-1之间一定有一个点.i也是选中的. R[i]表示R[ ...
- [USACO13OPEN]照片Photo 题解
题面 这道题似乎可以用单调队列优化DP做,但这里讲的是一种差分约束的思路; 设s[i]表示1~i中选了多少个: s[b[i]]-s[a[i]-1]<=1; s[b[i]]-s[a[i]-1]&g ...
随机推荐
- Oracle分页抽数存储过程
--outTotal是需要返回的总数,v_loginUserId是传入的登录人ID,抽取他的客户,v_CurrPage是传入的第几页,v_pageSize传入的每页数据条数. ) FROM tb_cu ...
- rsyn远程自动同步
rsync是远程自动同步工具,同时也能实现本地文件的复制,能够实现cp ,scp的功能,但是在远程同步上rsync要scp高效,因为scp能实现增量传输,每次都得全量传输,如果传输大文件时会很消耗网络 ...
- k8s的储存方式简述
pod中的存储卷类型:1.emptyDir:用于临时储存空间,无持久性储存功能,生命周期同pod容器,pod删除后,数据不再存在.2.gitRepo:pod创建时,自动将云端仓库中的文件克隆到pod挂 ...
- PHP 工厂模式介绍
工厂模式,顾名思义,如同工厂一样,你把原材料放入工厂中,出来的是成品,而你并不需要知道工厂里做了什么.代码中也类似,把主要参数放入一个工厂里,返回的是处理好的数据,我们并不需要工厂里做了什么,只需要知 ...
- 笔记-python tutorial-9.classes
笔记-python tutorial-9.classes 1. Classes 1.1. scopes and namespaces namespace: A namespace is ...
- PowerShell批量启动/关闭Azure VM
备注:以下例子中出现的JohnsonWeb, JohnsonVm均是虚拟机的名称.在运行Powershell脚本之前,请导入您的订阅文件. 根据条件启动/关闭虚拟机,例如根据虚拟机名称,批量启动/关闭 ...
- poj2955:Brackets
Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8716 Accepted: 4660 Descript ...
- MySQL之架构与历史(一)
MySQL架构与历史 和其他数据库系统相比,MySQL有点与众不同,它的架构可以在多种不同的场景中应用并发挥好的作用,但同时也会带来一点选择上的困难.MySQL并不完美,却足够灵活,它的灵活性体现在很 ...
- bootstrap button
样式修改 .sign-button, .sign-button:hover, .sign-button:focus, .sign-button:active, .sign-button:visited ...
- Maven 用Eclipse创建web项目后报错的解决方式
1.maven中创建web项目后jsp可能会报错,因为其没有相关的依赖(包),和自带的动态网页项目创建不一样.所以在配置文件中要添加相关的依赖,比如servlet的 2.项目右键-maven-upda ...