BZOJ 1898 沼泽鳄鱼(矩阵快速幂)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=,MOD=1e4;
typedef long long ll;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,m,s,t,k,x,y,fish,f[];
struct Mat{
int a[N][N];
Mat(){memset(a,,sizeof(a));}
void ini(){for(int i=;i<=n;i++) a[i][i]=;}
}g[],ans;
inline Mat operator *(Mat A,Mat B){
Mat C;
for(int k=;k<=n;k++)
for(int i=;i<=n;i++) if(A.a[i][k])
for(int j=;j<=n;j++) if(B.a[k][j])
C.a[i][j]=(C.a[i][j]+A.a[i][k]*B.a[k][j])%MOD;
return C;
}
inline Mat operator ^(Mat A,int k){
Mat ans;ans.ini();
for(;k;k>>=,A=A*A)
if(k&) ans=ans*A;
return ans;
}
void print(Mat A){
puts("hiMat");
for(int i=;i<=n;i++){
for(int j=;j<=n;j++) printf("%d ",A.a[i][j]);
puts("");
}
}
int main(){
//freopen("in.txt","r",stdin);
n=read();m=read();s=read()+;t=read()+;k=read();
for(int i=;i<=m;i++){
x=read()+;y=read()+;
for(int j=;j<=;j++) g[j].a[x][y]=g[j].a[y][x]=;
}
fish=read();
for(int i=;i<=fish;i++){
int T=read();
for(int j=;j<=T;j++) f[j]=read()+;
for(int j=;j<=;j++)
for(int k=;k<=n;k++) g[j].a[k][f[j%T+]]=;
}
g[].ini();
for(int i=;i<=;i++) g[]=g[]*g[i];
ans=g[]^(k/);
for (int i=;i<=k%;i++) ans=ans*g[i];
printf("%d",ans.a[s][t]);
}
BZOJ 1898 沼泽鳄鱼(矩阵快速幂)的更多相关文章
- bzoj1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1898 求到达方案数...还是矩阵快速幂: 能够到达就把邻接矩阵那里赋成1,有鳄鱼的地方从各处 ...
- [bzoj 1409] Password 矩阵快速幂+欧拉函数
考试的时候想到了矩阵快速幂+快速幂,但是忘(bu)了(hui)欧拉定理. 然后gg了35分. 题目显而易见,让求一个数的幂,幂是斐波那契数列里的一项,考虑到斐波那契也很大,所以我们就需要欧拉定理了 p ...
- BZOJ 1297 迷路(矩阵快速幂)
很容易想到记忆化搜索的算法. 令dp[n][T]为到达n点时时间为T的路径条数.则dp[n][T]=sigma(dp[i][T-G[i][n]]); 但是空间复杂度为O(n*T),时间复杂度O(n*n ...
- bzoj 1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1898 当然是邻接矩阵做转移矩阵来快速幂. 对于鳄鱼,好在它们周期的lcm是12,也就是每12 ...
- BZOJ1898: [Zjoi2005]Swamp 沼泽鳄鱼(矩阵快速幂)
题意 题目链接 Sol 不难发现吃人鱼的运动每\(12s\)一个周期 所以暴力建12个矩阵,放在一起快速幂即可 最后余下的部分暴力乘 #include<bits/stdc++.h> usi ...
- [luogu2579 ZJOI2005] 沼泽鳄鱼(矩阵快速幂)
传送门 题目描述 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎然,引来不少游客. 为了让游玩更有情趣,人们在池塘的中央建设了几座石 ...
- BZOJ 1875(DP+矩阵快速幂)
题面 传送门 分析 容易想到根据点来dp,设dp[i][j]表示到i点路径长度为j的方案数 状态转移方程为dp[i][k]=∑(i,j)∈Edp[j][k−1]" role="pr ...
- bzoj 1898: [Zjoi2005]Swamp 沼泽鳄鱼【dp+矩阵快速幂】
注意到周期234的lcm只有12,也就是以12为周期,可以走的状态是一样的 所以先预处理出这12个状态的转移矩阵,乘起来,然后矩阵快速幂优化转移k/12次,然后剩下的次数暴力转移即可 #include ...
- BZOJ 1898 构造矩阵+矩阵快速幂
思路: T的最小公倍数是12 那么12以内暴力 整除12 的部分用矩阵快速幂 //By SiriusRen #include <cstdio> #include <cstring&g ...
随机推荐
- Java基础——网络编程
一.网络编程概述 概述: Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接,联网 ...
- BZOJ4300_绝世好题_KEY
题目传送门 刚开始是看到这道题目还以为是序列连续的. 当然了,序列可以不连续. 设f[i]表示到第i位时的序列的最长长度. 取cnt=Max f[j]+1,然后转移回去使f[j]=cnt. 这是为了让 ...
- substr是不安全的
今天遇到一个问题,数据库中保存的内容通过php在页面无法显示,如果将内容换行或加个空格或者随便加点其他内容就能正常显示. 非常的诡异,显示的内容是通过截取得到的.代码非常简单 substr($pMar ...
- VMWare虚拟机下 centos network is unreachable 问题的解决
vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static BROADCAST=192.168.1.255 HW ...
- leetcode笔记9 Move Zeroes
题目要求: Given an array nums, write a function to move all 0's to the end of it while maintaining the r ...
- iOS - Foundation相关
1.NSString A.创建的方式: stringWithFormat:格式化字符串 ,创建字符串对象在堆区域 @"jack& ...
- 使用union
QUERY: explain extended ) TRACE: { "steps": [ { "join_preparation": { "sele ...
- CentOS安装nmon
nmon官网: http://nmon.sourceforge.net/pmwiki.php?n=Main.HomePage 下载nmon16e_mpginc.tar.gz到本地并上传到服务器 tar ...
- JavaWeb--------JSP语法基础学习(特别适合入门)
准备工作: 需要Tomcat8.0,MyEclipse,JDK JSP是一种运行在服务器端的脚本语言,JSP页面又是基于HTML网页的程序,它是Java Web 开发技术的基础. 基本内容: JSP页 ...
- eclipse格式化
一.eclipse格式化的必要性 1.便于阅读 2.便于协作 二.eclipse格式化快捷键 ctrl shift + F