【jzoj5335】【NOIP2017提高A组模拟8.24】【早苗】【矩阵乘法快速幂】
来源:互联网 发布:tushare mysql 编辑:程序博客网 时间:2024/06/18 05:05
description
solution
设f[i][j]表示到第i天,往前j天不同的方案数,可以转移到f[i+1][k],当k<=j时系数是1,当k==j+1时系数是m-j,当然要保证j!=m,可以发现这时可以用矩阵乘法快速幂解决的。
code
#include<set>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LL long long#define fo(i,j,k) for(LL i=j;i<=k;i++)#define fd(i,j,k) for(LL i=j;i>=k;i--)#define fr(i,j) for(LL i=begin[j];i;i=next[i])using namespace std;LL const mm=100+9,mo=1e9+7;LL n,m,lim,ans[mm][mm],mat[mm][mm],tmp[mm][mm];void multansmat(){ fo(i,1,lim)fo(j,1,lim)tmp[i][j]=0; fo(i,1,lim)fo(j,1,lim)fo(k,1,lim)tmp[i][k]=(tmp[i][k]+ans[i][j]*mat[j][k])%mo; fo(i,1,lim)fo(j,1,lim)ans[i][j]=tmp[i][j];}void multmatmat(){ fo(i,1,lim)fo(j,1,lim)tmp[i][j]=0; fo(i,1,lim)fo(j,1,lim)fo(k,1,lim)tmp[i][k]=(tmp[i][k]+mat[i][j]*mat[j][k])%mo; fo(i,1,lim)fo(j,1,lim)mat[i][j]=tmp[i][j];}int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); scanf("%lld%lld",&n,&m);lim=m; fo(i,1,m-1){ fo(j,1,i)mat[i][j]=1; mat[i][i+1]=m-i; } ans[1][1]=m; n--; while(n){ if(n&1)multansmat(); multmatmat(); n>>=1; } LL anss=0; fo(i,1,m-1)anss=(anss+ans[1][i])%mo; printf("%lld",anss); return 0;}
阅读全文
0 0
- 【jzoj5335】【NOIP2017提高A组模拟8.24】【早苗】【矩阵乘法快速幂】
- 【JZOJ5335】【NOIP2017提高组模拟】早苗(DP、矩阵乘法)
- 【JZOJ5335】【NOIP2017提高A组模拟8.24】早苗
- jzoj5335 【NOIP2017提高A组模拟8.24】早苗 (递推优化矩乘)
- 【NOIP2017提高A组模拟8.24】早苗
- 【NOIP2017提高A组模拟8.24】提米树
- 空【NOIP2017提高A组模拟8.24】
- 【JZOJ5336】【NOIP2017提高A组模拟8.24】提米树
- 5334. 【NOIP2017提高A组模拟8.24】空
- A【NOIP2017提高组模拟12.18】
- 【JZOJ4928】【NOIP2017提高组模拟12.18】A
- 【NOIP2017提高组模拟12.18】A
- 【JZOJ4928】【NOIP2017提高组模拟12.18】A
- 【NOIP2017提高A组模拟7.7】图
- 【NOIP2017提高A组模拟7.13】abcd
- 区间【NOIP2017提高A组模拟7.10】
- 【NOIP2017提高A组模拟8.22】密码
- 【NOIP2017提高A组模拟8.23】密码
- 14.耗时命令日志
- Linux下的lds链接脚本基础
- bootstrap fileinut插件详解
- Git12 stash
- [PAT]Emergency (25)@Java
- 【jzoj5335】【NOIP2017提高A组模拟8.24】【早苗】【矩阵乘法快速幂】
- Android零基础入门第44节:ListView数据动态更新
- c++初级 之 c语言的字符串cstring
- ViewPage+Fragment+ListView+ImageLoade的无限轮播
- 解决用浏览器下载文件时,文件大小不显示,也没进度
- QT 关于emit VS2008和VS2013的不同
- c++ STL List查找遍历及各成员函数用法详细介绍
- THINKPHP 请求mysql版本,适用于探针,后台显示等
- 计数排序