hdu5015构造转移矩阵
/*
构造转移矩阵:
先推公式:
首先是第0行:A[0][j+1]=A[0][j]*10+3
1-n行: A[i][j+1]=A[i][j]+A[i-1][j+1]=...
=A[i][j]+A[i-1][j]+...+A[1][j]+A[0][j+1]
所以第j+1行状态可以由第j行通过乘上一个转移矩阵得到
那么就是转移矩阵的构造
设F[j]为第j列,F[j+1]为第j+1列,B为转移矩阵
有 F[j+1]=B*F[j]
按照递推性质
1 0 0 0 0 ... 0 3 3
1 10 0 0 0 ... 0 A[0][j] A[0][j+1]
1 10 1 0 0 ... 0 * A[1][j] = A[1][j+1]
1 10 1 1 0 ... 0 A[2][j] .
1 10 1 1 1 ... 0 A[3][j] .
1 10 1 1 1 ... 1 A[n][j] A[n][j+1]
规定初始数组F[0]=[3,233,a1,a2...an]
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 10000007
ll F[],a[];
ll n,m;
struct Mat{
ll m[][];
Mat(){memset(m,,sizeof m);}
};
void mul1(Mat A,ll F[]){
ll B[]={};
for(int i=;i<n+;i++)
for(int j=;j<n+;j++)
B[i]=(B[i]+A.m[i][j]*F[j]%mod)%mod;
memcpy(F,B,sizeof B);
}
void mul2(Mat & A,Mat B){
Mat C;
for(int i=;i<n+;i++)
for(int j=;j<n+;j++)
for(int k=;k<n+;k++)
C.m[i][j]=(C.m[i][j]+A.m[i][k]*B.m[k][j]%mod)%mod;
memcpy(A.m,C.m,sizeof C.m);
}
int main(){
while(cin>>n>>m){
F[]=,F[]=;
for(int i=;i<n+;i++)cin>>F[i];
Mat A,B;
for(int i=;i<n+;i++)A.m[i][]=;
for(int i=;i<n+;i++)A.m[i][]=;
for(int j=;j<n+;j++)
for(int i=j;i<n+;i++)
A.m[i][j]=; while(m){
if(m%)
mul1(A,F);
mul2(A,A);
m>>=;
}
cout<<F[n+]<<endl;
}
}
hdu5015构造转移矩阵的更多相关文章
- 从随机过程到马尔科夫链蒙特卡洛方法(MCMC)
从随机过程到马尔科夫链蒙特卡洛方法 1. Introduction 第一次接触到 Markov Chain Monte Carlo (MCMC) 是在 theano 的 deep learning t ...
- 北京培训记day1
数学什么的....简直是丧心病狂啊好不好 引入:Q1:前n个数中最多能取几个,使得没有一个数是另一个的倍数 答案:(n/2)上取整 p.s.取后n/2个就好了 Q2:在Q1条件下,和最小为多少 答 ...
- MCMC 、抽样算法与软件实现
一.MCMC 简介 1. Monte Carlo 蒙特卡洛 蒙特卡洛方法(Monte Carlo)是一种通过特定分布下的随机数(或伪随机数)进行模拟的方法.典型的例子有蒲丰投针.定积分计算等等,其基础 ...
- 2014 ACM/ICPC Asia Regional Xi'an Online
03 hdu5009 状态转移方程很好想,dp[i] = min(dp[j]+o[j~i]^2,dp[i]) ,o[j~i]表示从j到i颜色的种数. 普通的O(n*n)是会超时的,可以想到o[]最大为 ...
- BZOJ4471 : 随机数生成器Ⅱ
\[\begin{eqnarray*}x_i&=&x_{i-1}+x_{i-2}\\x_i^2&=&x_{i-2}^2+x_{i-1}^2+2x_{i-2}x_{i-1 ...
- [转] - MC、MC、MCMC简述
贝叶斯集锦(3):从MC.MC到MCMC 2013-07-31 23:03:39 #####一份草稿 贝叶斯计算基础 一.从MC.MC到MCMC 斯坦福统计学教授Persi Diaconis是一位传奇 ...
- 随机采样方法整理与讲解(MCMC、Gibbs Sampling等)
本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅.其实参考资料中的资料写的比我好,大家可以看一下!好东西多分享!PRML的第11章也是sampling,有时间后面写到P ...
- AC自动机基础知识讲解
AC自动机 转载自:小白 还可参考:飘过的小牛 1.KMP算法: a. 传统字符串的匹配和KMP: 对于字符串S = ”abcabcabdabba”,T = ”abcabd”,如果用T去匹配S下划线部 ...
- LDA-math-MCMC 和 Gibbs Sampling
http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/ 3.1 随机模拟 随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Mon ...
随机推荐
- AspectJ使用的遇到的坑
1.导入包,但不是使用,会导致R文件错误 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply pl ...
- Java类加载双亲委托模式优点
启动类加载器可以抢在标准扩展类加载器之前去装载类,而标准扩展类装载器可以抢在类路径加载器之前去加载那个类,类路径装载器又可以抢在自定义类装载器之前去加载类.所以Java虚拟机先从最可信的Java核心A ...
- mysql数据库可以远程连接或者说用IP地址可以访问
mysql数据库可以远程连接或者说用IP地址可以访问 一般情况不建议直接修改root的权限, 先看下,自己mysql数据库的用户级权限 mysql -u root -p----->用root登陆 ...
- Python对HDFS的一些基础操作
链接: http://www.cnblogs.com/shoufengwei/p/5949791.html
- 关于istream_iterator<int>(cin)和istream_iterator<int>()的一点分析
最近在看STL,其中讲到容器这一部分的时候,有以下两个式子,有点疑惑: deque<) //函数声明 deque<) //定义一个容器 式子原本的含义都是要定义一个容器,容器的内容从标准输 ...
- 利用shell简单监控网络设备的接口状态发出告警
作者:邓聪聪 #!/bin/sh Date=$(date +%F_%T) iplist=`cat ip.txt |awk '{print $1}'` snmp="hjsz-snmp" ...
- 1、git基础介绍及远程/本地仓库、分支
1. Git基础介绍 基于Git进行开发时,首先需要将远程仓库代码clone到本地,即为本地仓库.后续大部分时间都是基于本地仓库上的分支进行编码,最后将本地仓库的代码合入远程仓库. 1.1. 远程仓库 ...
- hibernate框架学习之持久化对象OID
持久化对象唯一标识——OID 1)数据库中使用主键可以区分两个对象是否相同2)Java语言中使用对象的内存地址区分对象是否相同3)Hibernate中使用OID区分对象是否相同Hibernate认为每 ...
- python学习第38天
mysql的存储引擎(innodb,myisam)mysql支持的数据类型约束表的创建\删除\修改\查看表结构表与表之间的关系
- vue.js插槽
具体讲解的url https://github.com/cunzaizhuyi/vue-slot-demo //例子 用jsfiddle.net去运行就好 <!DOCTYPE html> ...