题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1898

当然是邻接矩阵做转移矩阵来快速幂。

对于鳄鱼,好在它们周期的lcm是12,也就是每12次就又一样了。

所以把12个转移矩阵合成一下,就可以每次乘一样的,进而快速幂。%12剩下的次数暴力一下。

学到了一些方便的东西,比如struct的构造函数没有参数之类的。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=,mod=1e4;
int n,m,st,ed,k,fs;
struct Matrix{
int a[N][N];
Matrix(){memset(a,,sizeof a);}
Matrix operator*(const Matrix &b)const
{
Matrix c;
memset(c.a,,sizeof c.a);//
for(int i=;i<=n;i++)
for(int k=;k<=n;k++)
for(int j=;j<=n;j++)
(c.a[i][j]+=a[i][k]*b.a[k][j]%mod)%=mod;
return c;
}
void init()
{
for(int i=;i<=n;i++)a[i][i]=;
}
}r[],ans;
int main()
{
scanf("%d%d%d%d%d",&n,&m,&st,&ed,&k);st++;ed++;
int x,y;
for(int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);x++;y++;
for(int j=;j<=;j++)
r[j].a[x][y]=,r[j].a[y][x]=;
}
scanf("%d",&fs);
for(int i=;i<=fs;i++)
{
scanf("%d",&x);
for(int j=;j<=x;j++)
{
scanf("%d",&y);y++;
for(int k=j;k<=;k+=x)
memset(r[k].a[y],,sizeof r[k].a[y]);
}
}
r[].init();
for(int i=;i<=;i++)r[]=r[]*r[i];
ans.a[][st]=;x=k/;
while(x)
{
if(x&)ans=ans*r[];
r[]=r[]*r[];x>>=;
}
x=k%;
for(int i=;i<=x;i++)ans=ans*r[i];
printf("%d",ans.a[][ed]);
return ;
}

bzoj 1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂的更多相关文章

  1. BZOJ 1898: [Zjoi2005]Swamp 沼泽鳄鱼 [矩阵乘法]

    1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1082  Solved: 602[Submit][S ...

  2. bzoj1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1898 求到达方案数...还是矩阵快速幂: 能够到达就把邻接矩阵那里赋成1,有鳄鱼的地方从各处 ...

  3. BZOJ1898: [Zjoi2005]Swamp 沼泽鳄鱼(矩阵快速幂)

    题意 题目链接 Sol 不难发现吃人鱼的运动每\(12s\)一个周期 所以暴力建12个矩阵,放在一起快速幂即可 最后余下的部分暴力乘 #include<bits/stdc++.h> usi ...

  4. BZOJ 1898: [Zjoi2005]Swamp 沼泽鳄鱼

    1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1085  Solved: 604[Submit][S ...

  5. bzoj 1898: [Zjoi2005]Swamp 沼泽鳄鱼【dp+矩阵快速幂】

    注意到周期234的lcm只有12,也就是以12为周期,可以走的状态是一样的 所以先预处理出这12个状态的转移矩阵,乘起来,然后矩阵快速幂优化转移k/12次,然后剩下的次数暴力转移即可 #include ...

  6. BZOJ 1898: [Zjoi2004]Swamp 沼泽鳄鱼(矩阵乘法)

    可以发现,如果没有鳄鱼,那么就是裸地一道题,但是可以发现鳄鱼最多每12次重复,那么就少于12的那部分dp,其他的就矩阵乘法就行了 PS:第一次吧矩阵乘法AC了好开心QAQ CODE: #include ...

  7. 1898: [Zjoi2005]Swamp 沼泽鳄鱼

    1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1582 Solved: 870 [Submit][S ...

  8. BZOJ 1898: [Zjoi2004]Swamp 沼泽鳄鱼( dp + 矩阵快速幂 )

    ----------------------------------------------------------------------- #include<cstdio> #incl ...

  9. 【BZOJ1898】[Zjoi2005]Swamp 沼泽鳄鱼 矩阵乘法

    [BZOJ1898][Zjoi2005]Swamp 沼泽鳄鱼 Description 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎 ...

随机推荐

  1. 苹果终端wifi图标点亮慢和portal弹窗机制分析以及处理办法和建议

    转:http://kms.h3c.com/View.aspx?id=52875 问题现象 在无线环境中经常碰到苹果终端连接无线后wifi图标无法点亮导致终端无法上网.在起portal的网络中认证页面无 ...

  2. jQuery带闹钟的数字时钟

    在线演示 本地下载

  3. freemarker内建函数介绍

    Sequence的内置函数1.sequence?first 返回sequence的第一个值.2.sequence?last 返回sequence的最后一个值.3.sequence?reverse 将s ...

  4. SpringCloud Bus消息总线

    在微服务架构中,通常会使用轻量级的消息代理来构建一个共用的消息主题来连接各个微服务实例,它广播的消息会被所有在注册中心的微服务实例监听和消费,也称消息总线. SpringCloud中也有对应的解决方案 ...

  5. 【bzoj3747】Kinoman[POI2015](线段树)

    题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3747 对于这种题,考虑固定区间的右端点为r,设区间左端点为l能取得的好看值总和为a[l] ...

  6. EntityFramework 学习 一 Execute Native SQL Query

    SQL query for entity types: using (var ctx = new SchoolDBEntities()) { var studentList = ctx.Student ...

  7. HDFS-文件写入API

    package com.zhen.hdfs; import java.io.BufferedInputStream; import java.io.FileInputStream; import ja ...

  8. lua闭包浅析及项目应用

    lua函数与闭包: 原文地址:http://www.doc88.com/p-6681238341344.html 近日查阅关于lua的一些资料,找到了我能理解的关于lua函数与闭包的解析,我觉得这个程 ...

  9. Mfc 建立窗口线程

    之前一直都是在学习C,但是没用MFC写过东西.所以这个算是MFC的一个处女作把. 今天硬着头皮写了个爆破工具,但是界面(edit控制)在显示的时候一下就被卡住了. 于是到处问人,后来有个不错的朋友帮我 ...

  10. 安装Tomcat服务器以及错误汇总(tomcat8.0、jdk8)

    Tomcat安装和启动 一.下载Tomcat 你可以直接百度Tomcat官网, 或者,直接在地址栏输入他的官网地址:http://tomcat.apache.org/,然后进入他的主页,在主页左侧可以 ...