772002画马尾

题目连接:

http://acm.uestc.edu.cn/#/problem/show/1280

Description

众所周知772002很喜欢马尾,所以他决定画几幅马尾送给他的女朋友。

772002会画m种马尾,772002还有n张纸,n张纸分别编号1到n,每张纸上只能画一种马尾。

然而772002的女朋友只喜欢其中t种马尾。并且772002的女朋友只喜欢偶数(因为这象征着成对成双)。

772002想知道有多少种画法,使得n张纸画满并且自己女朋友喜欢的那t种马尾每种个数都恰好为偶数。

然而772002陪女朋友看电影去了,所以他把这个问题交给了你,你能解决吗?

Input

一行,三个整数m,n,t。

1-50组数据 m≤2,t≤m,n≤100

51-100组数据 m≤5,t≤m,n≤10000

101-300组数据 m≤10,t≤m,n≤1000000000

Output

一个整数,表示方案数,因为这个数比较大,所以输出对10007求余的结果。

Sample Input

2 93 1

Sample Output

8605

Hint

题意

题解:

比较显然的是dp[i][j] = dp[i-1][j-1]*(t-j+1) + dp[i-1][j]*(m-t) + dp[i-1][j+1]*(j+1)

然后这个东西是可以化成矩阵的

然后矩阵快速幂暴力一波就好了。

代码

#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
int n,m,t,i,x[11][11];
int mo=10007;
void multiply(int a[11][11],int b[11][11])
{
int i,j,k,c[11][11];
for (i=0;i<=t;i++)
for (j=0;j<=t;j++)
{
c[i][j]=0;
for (k=0;k<=t;k++) c[i][j]=(c[i][j]+a[i][k]*b[k][j])%mo;
} for (i=0;i<=t;i++)
for (j=0;j<=t;j++)
a[i][j]=c[i][j];
}
void binary(int x[11][11],int a)
{
int i,j,y[11][11];
if (a==1) return;
for (i=0;i<=t;i++)
for (j=0;j<=t;j++)
y[i][j]=x[i][j];
multiply(x,x);
binary(x,a/2);
if (a%2==1) multiply(x,y);
}
int main()
{
scanf("%d%d%d",&m,&n,&t);
for (i=0;i<=t;i++)
{
if (i!=0) x[i-1][i]=t-i+1;
x[i][i]=m-t;
if (i!=t) x[i+1][i]=i+1;
}
binary(x,n);
printf("%d\n",x[0][0]);
}

最新文章

  1. node的错误处理
  2. guess number
  3. [Spring] - Quartz定时任务 - Annotation
  4. [原创.数据可视化系列之五]韩国&quot;萨德&quot;系统防御图
  5. pthread——pthread_cleanup
  6. Git.Framework 框架随手记--ORM查询返回实体对象
  7. linux socket中的SO_REUSEADDR
  8. 双11不再孤单,结识ECharts---强大的常用图表库
  9. SuperSocket学习笔记(二)
  10. 老李分享:loadrunner的java user脚本开发
  11. FluorineFx.IO.AMFMessage
  12. MySQL中的字符串函数
  13. Java Web开发中路径问题小结
  14. ES 05 - 通过Kibana管理Elasticsearch集群服务
  15. 局域网配置dnsmasq
  16. 破解某PDF转换器产品
  17. 在java.util中有EventListener接口:所有事件监听者都要实现这个接口。
  18. spring配置文件中xsd引用问题
  19. 【汉化】Acunetix Web Vulnerability Scanner 11.x汉化包
  20. sublime text 3 快捷键&amp;&amp;使用技巧

热门文章

  1. java===java基础学习(4)---字符串操作
  2. HDU 5117 Fluorescent
  3. python中eval函数使用
  4. C++ STL结构总结
  5. Jquery屏蔽浏览器的F1-F12快捷键,在IE,GOOGLE下测试均无问题
  6. 《java并发编程实战》读书笔记3--对象的组合
  7. hdu 1426(DFS+坑爹的输入输出)
  8. hdu 1547(BFS)
  9. hdu 1671(字典树判断前缀)
  10. 数据库SQL调优之&quot;执行计划&quot;【未完待续】