BZOJ 1898 构造矩阵+矩阵快速幂
思路:
T的最小公倍数是12
那么12以内暴力 整除12 的部分用矩阵快速幂
//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m,st,ed,k,nfish,T,p[5],can[13][55];
struct Matrix{
int a[55][55];
void init(){memset(a,0,sizeof(a));}
void Change(){for(int i=0;i<n;i++)a[i][i]=1;}
friend Matrix operator*(Matrix a,Matrix b){
Matrix c;c.init();
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
for(int k=0;k<n;k++)
c.a[i][j]+=a.a[i][k]*b.a[k][j];
c.a[i][j]%=10000;
}
return c;
}
friend Matrix operator^(Matrix a,int b){
Matrix c;c.init();c.Change();
for(;b;b>>=1,a=a*a)if(b&1)c=c*a;
return c;
}
}begin[13];
struct Path{int from,to;}path[2555];
int main(){
scanf("%d%d%d%d%d",&n,&m,&st,&ed,&k);
for(int i=1;i<=m;i++)scanf("%d%d",&path[i].from,&path[i].to);
scanf("%d",&nfish);
while(nfish--){
scanf("%d",&T);
for(int i=0;i<T;i++)scanf("%d",&p[i]);
for(int i=0;i<12;i++)can[i][p[i%T]]=1;
}
for(int i=0;i<n;i++)can[12][i]=can[0][i];
begin[0].Change();
for(int i=1;i<=12;i++){
for(int j=1;j<=m;j++){
if(!can[i-1][path[j].from]&&!can[i][path[j].to])
begin[i].a[path[j].from][path[j].to]++;
if(!can[i-1][path[j].to]&&!can[i][path[j].from])
begin[i].a[path[j].to][path[j].from]++;
}
begin[0]=begin[0]*begin[i];
}
begin[0]=begin[0]^(k/12);
for(int i=1;i<=k%12;i++)begin[0]=begin[0]*begin[i];
printf("%d\n",begin[0].a[st][ed]);
}
BZOJ 1898 构造矩阵+矩阵快速幂的更多相关文章
- Luogu 1349 广义斐波那契数列(递推,矩阵,快速幂)
Luogu 1349 广义斐波那契数列(递推,矩阵,快速幂) Description 广义的斐波那契数列是指形如\[A_n=p*a_{n-1}+q*a_{n-2}\]的数列.今给定数列的两系数p和q, ...
- 洛谷 P4910 帕秋莉的手环 矩阵乘法+快速幂详解
矩阵快速幂解法: 这是一个类似斐波那契数列的矩乘快速幂,所以推荐大家先做一下下列题目:(会了,差不多就是多倍经验题了) 注:如果你不会矩阵乘法,可以了解一下P3390的题解 P1939 [模板]矩阵加 ...
- Qbxt 模拟赛 Day4 T2 gcd(矩阵乘法快速幂)
/* 矩阵乘法+快速幂. 一开始迷之题意.. 这个gcd有个规律. a b b c=a*x+b(x为常数). 然后要使b+c最小的话. 那x就等于1咯. 那么问题转化为求 a b b a+b 就是斐波 ...
- 【BZOJ 2323】 2323: [ZJOI2011]细胞 (DP+矩阵乘法+快速幂*)
2323: [ZJOI2011]细胞 Description 2222年,人类在银河系外的某颗星球上发现了生命,并且携带了一个细胞回到了地球.经过反复研究,人类已经完全掌握了这类细胞的发展规律: 这种 ...
- 矩阵乘法快速幂 codevs 1574 广义斐波那契数列
codevs 1574 广义斐波那契数列 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 广义的斐波那契数列是指形如 ...
- BZOJ-1875 HH去散步 DP+矩阵乘法快速幂
1875: [SDOI2009]HH去散步 Time Limit: 20 Sec Memory Limit: 64 MB Submit: 1196 Solved: 553 [Submit][Statu ...
- BZOJ-2326 数学作业 矩阵乘法快速幂+快速乘
2326: [HNOI2011]数学作业 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1564 Solved: 910 [Submit][Statu ...
- BZOJ-2875 随机数生成器 矩阵乘法快速幂+快速乘
题目没给全,吃X了... 2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1479 Solved: 829 ...
- UVA Recurrences 矩阵相乘+快速幂
题目大意: f(n) = a1 f(n - 1) + a2 f(n - 2) + a3 f(n - 3) + ... + ad f(n - d),已给递推公式,求f(n)的大小. 解题思路: n很大, ...
随机推荐
- NumPy和Pandas常用库
NumPy和Pandas常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数 ...
- SOAPUI 安装及破解
转自:https://blog.csdn.net/henni_719/article/details/79000130 先下载SOAPUI,我这里用的是5.1.2 PRO 版 下载路径:http:/ ...
- C# Parse and TryParse 方法详解
工作中遇到的常用方法: Parse and TryParse TryParse 方法类似于 Parse 方法,不同之处在于 TryParse 方法在转换失败时不引发异常 /// <summary ...
- 解决Highcharts指针偏离的问题
Highcharts 在初始化3D柱状图 时 (注意:3D图形会发生偏移,2D显示正常) 如果加入 shared: true,属性,则可能会导致柱 状图 toolTip提示框偏移,解决方法是去掉或注释 ...
- Rsync 服务器搭建
Rsync简介 rsync 是一个 Unix 系统下的文件同步和传输工具. 它具备以下特性: 1. 能更新整个目录和树和文件系统 2. 有选择性的保持符号链链.硬链接.文件属于.权限.设备以及时间 等 ...
- Safari new Date() 兼容问题
我的时间 var myTime = "2015-12-31 12:10:21"; 正常写法 var newTime = new Date(myTime); safari兼容写法 ...
- Xml实现图片旋转
1. 需求:不使用Java代码,实现旋转图片动画 2.实现:使用Progressbar控件 3. anim/anim_loading.xml <?xml version="1.0&qu ...
- HDU 1257 最少拦截系统【最长上升子序列】
解题思路:可以转化为求最长上升子序列来做,还是可以用an与按升序排列后的an求LCS来做,为防止超时,用滚动数组优化一下就可以了. 最少拦截系统 Time Limit: 2000/1000 MS (J ...
- Image解码
Image解码 可以看到从CFDataRef直到创建出UIImage,都没有调用过对图像解码的函数,只读取了一些图像基础数据和元数据. Image解码发生在什么时候?在ImageIO/CGImageS ...
- JDBC程序实例
实例 ( Statement ): public class JDBC { public static void main(String[] args) throws Exception { Conn ...