P2579 [ZJOI2005]沼泽鳄鱼(矩乘)
没有食人鱼:直接矩乘优化
有食人鱼:食人鱼周期2、3、4,公倍数12,可以以12为一个周期矩乘,剩下的暴力
注意矩乘不满足乘法交换律,一定要注意乘的顺序
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,S,T,K,d[];
struct mat{
int a[][];
mat(){memset(a,,sizeof(a));}
mat operator * (const mat &G) const{
mat c;
for(int i=;i<n;++i)
for(int j=;j<n;++j)
for(int k=;k<n;++k)
c.a[i][j]=(c.a[i][j]+a[i][k]*G.a[k][j]%)%;
return c;
}
}s,f[],w;
mat Pow(mat x,int y){
mat re;
for(int i=;i<n;++i) re.a[i][i]=;
for(;y;y>>=,x=x*x) if(y&) re=re*x;
return re;
}
int main(){
scanf("%d%d%d%d%d",&n,&m,&S,&T,&K);
for(int i=,u,v;i<=m;++i){
scanf("%d%d",&u,&v);
s.a[u][v]=s.a[v][u]=;
}
for(int i=;i<;++i) f[i]=s;
scanf("%d",&m);
for(int i=,t;i<=m;++i){
scanf("%d",&t);
for(int u=;u<t;++u) scanf("%d",&d[u]);
for(int j=;j<;++j)
for(int k=;k<n;++k)
f[j].a[k][d[j%t]]=;
}
for(int i=;i<n;++i) w.a[i][i]=;
for(int i=;i<;++i) w=w*f[i];
w=w*f[]; w=Pow(w,K/);
for(int i=;i<=K%;++i) w=w*f[i];
printf("%d",w.a[S][T]);
return ;
}
P2579 [ZJOI2005]沼泽鳄鱼(矩乘)的更多相关文章
- P2579 [ZJOI2005]沼泽鳄鱼
传送门 话说邻接矩阵居然还能快速幂的么-- 把原图的邻接矩阵\(G\)打出来,那么\(G[u][v]\)表示一秒后\(u\)到\(v\)的方案数,\(G^2[u][v]\)表示\(2\)秒后的方案数- ...
- P2579 [ZJOI2005]沼泽鳄鱼(邻接矩阵,快速幂)
题目简洁明了(一点都不好伐) 照例,化简题目 给一张图,每一个时间点有一些点不能走,(有周期性),求从起点第k秒恰好在终点的方案数,可重复,不可停留. 额dp实锤 于是就被打脸了.... 有一种东西叫 ...
- 【BZOJ1898】[ZJOI2005]沼泽鳄鱼(矩阵快速幂,动态规划)
[BZOJ1898][ZJOI2005]沼泽鳄鱼(矩阵快速幂,动态规划) 题面 BZOJ 洛谷 题解 先吐槽,说好了的鳄鱼呢,题面里面全是食人鱼 看到数据范围一眼想到矩乘. 先不考虑食人鱼的问题,直接 ...
- 题解-[ZJOI2005]沼泽鳄鱼
题解-[ZJOI2005]沼泽鳄鱼 前置知识: 邻接矩阵 矩阵乘法 矩阵快速幂 [ZJOI2005]沼泽鳄鱼 给一个有 \(N\) 个点,\(M\) 条双向边的图 \(G\),其中有 \(NFish\ ...
- ZJOI2005沼泽鳄鱼
矩阵优化dp ** 注意:矩阵乘法没有交换律 ** 思路:类比P2151hh去散步 代码特点在一维的答案矩阵 1.矩阵优化两点间方案数不必赘述 2.注意2,3,4可以办到以他们的lcm为周期,正是因为 ...
- bzoj1898 [Zjoi2005]沼泽鳄鱼
Description 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎然,引来不少游客.为了让游玩更有情趣,人们在池塘的中央建设了几 ...
- [ZJOI2005]沼泽鳄鱼 矩阵乘法
---题面--- 题解: 乍一看还是挺懵逼的.和HH去散步很像,思路也是类似的. 复制一段我在HH去散步的题解里面写的一段话吧: 考虑f[i][j]表示i和j是否右边相连,有为1,否则为0,那么f同时 ...
- [ZJOI2005]沼泽鳄鱼
题目描述 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎然,引来不少游客. 为了让游玩更有情趣,人们在池塘的中央建设了几座石墩和石桥 ...
- [luogu2579 ZJOI2005] 沼泽鳄鱼(矩阵快速幂)
传送门 题目描述 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎然,引来不少游客. 为了让游玩更有情趣,人们在池塘的中央建设了几座石 ...
随机推荐
- linux开启 Sersync 守护进程进行数据同步
a.配置 Sersync 环境变量 [root@SERSYNC sersync]# echo 'export PATH=$PATH:/usr/local/sersync/bin'>>/et ...
- Git分支操作步骤
学习操作Git分支,具体如下: - 查看分支 - 创建分支 - 切换分支 - 合并分支 - 解决分支的冲突 方案: Git支持按功能模块,时间,版本等标准创建分支; 分支可以让开发分多条主线同时进行, ...
- 修改编码为utf8mb4 以支持emoji表情
环境: 项目db的所有字符集都已经初始化为utf-8,如 status命令显示如下: Server characterset: utf8Db characterset: utf8Client char ...
- hdu 6045: Is Derek lying? (2017 多校第二场 1001)【找规律】
题目链接 可以暴力找一下规律 比如,假设N=7,两人有5题相同,2题不同,枚举X=0->15时,Y的"Not lying"的取值范围从而找出规律 #include<bi ...
- 关于python3 使用pycharm+unittest+html+HTMLTestRunner 测试用例运行正常,但却不能生成测试报告的解决方法
关于python3 使用pycharm+unittest+html+HTMLTestRunner 测试用例运行正常,但却不能生成测试报告的解决方法 这个问题我也遇到过,以下是解决办法 该方法适用于 ...
- MongoDB与阿里云达成战略合作,最新数据库独家上线阿里云!
11月26日,开源数据库厂商MongoDB与阿里云在北京达成战略合作,作为合作的第一步,最新版MongoDB 4.2数据库产品正式上线阿里云平台. 目前阿里云成为全球唯一可提供最新版MongoDB服务 ...
- kafka消费组、消费者
consumer group consumer instance 一个消费组可能有一个或者多个消费者.同一个消费组可以订阅一个或者多个主题.主题的某一个分区只能被消费组的某一个消费者消费.那么分区和消 ...
- php怎么获取js的变量值
使用php做网站的时候,经常需要我们与前端的页面进行交互,有时候我们还需要通过php来获得js变量中的值,这种情况我们可以通过在其中嵌入js代码的方式来获得这个变量. 首先我们创建一个test的php ...
- CF 1182F Maximum Sine——根号算法
题目:http://codeforces.com/contest/1182/problem/F 注意有绝对值. 那么就是 k*p 对 q 取模,找最接近 \(\frac{q}{2}\) 的结果. 也就 ...
- django搭建一个小型的服务器运维网站-用户登陆与session
目录 项目介绍和源码: 拿来即用的bootstrap模板: 服务器SSH服务配置与python中paramiko的使用: 用户登陆与session; 最简单的实践之修改服务器时间: 查看和修改服务器配 ...