博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NOIP模拟题——LGTB与桌子
阅读量:4604 次
发布时间:2019-06-09

本文共 1843 字,大约阅读时间需要 6 分钟。

LGTB新买了一张n*m的矩(桌)阵(子),他想给某些1*1的小矩形染色,使得染色之后,原矩阵的每个n*n的子矩阵中都包含恰好k个被染色了的小矩形。他想知道有多少种染色方案能让他满足上述要求。因为答案肯呢个很大,请输出方案数膜1e9+7的值

输入

输入第一行包含三个整数n,m,k,意义如题面所示

对于15%的数据,1≤n*m≤20,n≤m

对于40%的数据,1≤n≤10,n≤m≤1000

对于100%的数据,1≤n≤100,n≤m≤1e18,0≤k≤n²

输出

输出包含1个整数,代表LGTB的方案数

样例

样例输入

5 6 1

样例输出

45

时间限制

3s

样例说明

 

样例如图所示,如果在灰色区域染一个格子,有20种方案。如果在两边的白色格子各染一个格子,有25种方案。共45种方案。

 

 

由于题目描述中m最大是1e18,所以肯定要用到快速幂。

首先我们可以发现,如果把一列捆在一起处理的话,那么为了满足题意,第i列一定与第i+n列的染色个数是相同的。

那么考虑DP[i][j],代表每一个整个块(如1~n为一块,n+1~2*n为一块,因为他们每一列的染色个数相同)中处理了前i列,此时染了j个颜色的方案数。

那么如果考虑下一块的话,设下一块染色个数为kk,则增加的方案数就为C[n][k]^t[i](t[i]为i位置存在的总个数)

于是C[n][k]用杨辉三角求出,然后在快速幂求C[n][k]^t[i]。

这里会发现,有可能最后要多出一点,也就是部分块,那么他们的列数要+1。

处理完过后,就可以直接DP了。时间复杂度O(n^4)

 

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 const int maxn=105; 7 const long long mod=1e9+7; 8 int n,k;long long m; 9 long long c[maxn][maxn];10 long long dp[maxn][maxn*maxn];11 long long w[2][maxn];long long re;12 long long qe(long long a,long long b)13 {14 long long qwe=1;15 while(b)16 {17 if(b&1)qwe*=a;18 if(qwe>mod)qwe%=mod;19 b>>=1;a=a*a;20 if(a>mod)a%=mod;21 }22 return qwe;23 }24 void init()25 {26 c[0][0]=1;27 for(int i=1;i<=100;i++)28 for(int j=0;j<=i;j++)29 {30 c[i][j]=c[i-1][j]+c[i-1][j-1];31 if(c[i][j]>mod)c[i][j]%=mod;32 }33 long long qwe=m/n;34 re=m%n;35 for(int i=0;i<=n;i++)36 {37 w[0][i]=qe(c[n][i],qwe);38 w[1][i]=qe(c[n][i],qwe+1);39 }40 return ;41 }42 int main()43 {44 freopen("table.in","r",stdin);45 freopen("table.out","w",stdout);46 scanf("%d%I64d%d",&n,&m,&k);47 init();48 dp[0][0]=1;49 long long wer=0;50 for(int i=0;i

 

 

 

转载于:https://www.cnblogs.com/937337156Zhang/p/6070381.html

你可能感兴趣的文章
Zabbix是什么?
查看>>
源码:COCO微博
查看>>
面向对象预习随笔
查看>>
大数据概念炒作周期模型
查看>>
排序模型
查看>>
Dede推荐文章与热点文章不显示?
查看>>
React 3
查看>>
Topshelf 使用
查看>>
Linux --Apache服务搭建
查看>>
20145325张梓靖 实验三 "敏捷开发与XP实践"
查看>>
JavaScript面试题
查看>>
[转帖]架构师眼中的高并发架构
查看>>
ios的一些开源资源
查看>>
HTTP 错误 500.21 - Internal Server Error 解决方案
查看>>
Bucks sign Sanders to $44 million extension
查看>>
【PHP】Windows下配置用mail()发送邮件
查看>>
Nhibernate和EF的区别
查看>>
基于java spring框架开发部标1078视频监控平台精华文章索引
查看>>
人类简史
查看>>
java 设计模式学习
查看>>