这道题十分的坑……

我作为一只连矩乘都不太会的渣渣看到这道题就只能神搜了…..

首先说一下普通的矩乘求方案,就是高出邻接矩阵然后一顿快速幂…..

矩乘一般就是一些秘制递推…..

再说一下这道题,我们可以看出这小骚题有个条件就是说,不能立刻回头,这就不能用以往的了,以往的前后顺序无关,在矩阵里放的是:f[i][j]就是说第i个状态可以由第j个状态转移而来,那么我们可以看出若这个边为无向边,那么对于->*来说这个->东西可以无脑转移到*,因为*是->的合法状态也是唯几合法状态…..

最后的答案把->到B的加起来就好了…….

#include<cstdio>
#include<cstring>
#define N 25
#define M 65
#define P 45989
using namespace std;
inline int read()
{
int sum=;
char ch=getchar();
while(ch<''||ch>'')ch=getchar();
while(ch>=''&&ch<='')
{
sum=(sum<<)+(sum<<)+ch-'';
ch=getchar();
}
return sum;
}
int a[M<<][M<<],b[M<<];
int n,m,T,A,B;
struct Tr
{
int to,next,id;
}c[M<<];
int head[N],t;
inline void add(int x,int y)
{
c[++t].to=y;
c[t].next=head[x];
c[t].id=t;
head[x]=t;
}
bool En[M<<];
inline void look()
{
printf("LET US SEE B\n");
for(int i=;i<=(m<<);i++)
printf(" %d ",b[i]);
printf("\n");
}
inline void Init()
{
n=read(),m=read(),T=read(),A=read()+,B=read()+;
for(int i=;i<=m;i++)
{
int x=read()+,y=read()+;
add(x,y),add(y,x);
}
for(int x=;x<=n;x++)
{
for(int i=head[x];i;i=c[i].next)
{
int y=c[i].to;
if(y==B)En[c[i].id]=;
int caocaocao=;
for(int j=head[y];j;j=c[j].next)
{
if(c[j].to==x)
caocaocao++;
if(c[j].to!=x||(c[j].to==x&&caocaocao!=))
a[c[j].id][c[i].id]=;
}
}
}
for(int i=head[A];i;i=c[i].next)
b[c[i].id]=;
}
int temp[M<<][M<<],d[M<<];
inline void up()
{
memset(d,,sizeof(d));
for(int i=;i<=(m<<);i++)
for(int j=;j<=(m<<);j++)
d[i]+=a[i][j]*b[j]%P;
for(int i=;i<=(m<<);i++)
b[i]=d[i]%P;
}
inline void multi()
{
memset(temp,,sizeof(temp));
for(int i=;i<=(m<<);i++)
for(int j=;j<=(m<<);j++)
for(int k=;k<=(m<<);k++)
temp[i][j]+=a[i][k]*a[k][j]%P;
for(int i=;i<=(m<<);i++)
for(int j=;j<=(m<<);j++)
a[i][j]=temp[i][j]%P;
}
inline void work()
{
T=T-;
while(T)
{
//look();
if(T&)up();
T>>=;
multi();
}
int ans=;
for(int i=;i<=(m<<);i++)
if(En[i])
ans+=b[i];
ans%=P;
printf("%d",ans);
}
int main()
{
Init();
if(T==)
{
if(A==B)printf("");
else printf("");
return ;
}
work();
return ;
}

BZOJ1875: [SDOI2009]HH去散步 图上边矩乘的更多相关文章

  1. bzoj1875: [SDOI2009]HH去散步

    终于A了...早上按自己以前的写法一直WA.下午换了一种写法就A了qwq #include<cstdio> #include<cstring> #include<iost ...

  2. [难题题解] [BZOJ1875] [SDOI2009] HH去散步

    题目H有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH是个喜欢变化的人 ...

  3. BZOJ1875 [SDOI2009]HH去散步 矩阵

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1875 题意概括 在一个无向图(有重边无自环)中走,不能在经过连续经过某一条边2次. 现在走t步,问 ...

  4. BZOJ1875 [SDOI2009]HH去散步 【dp + 矩阵优化】

    题目 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH是个喜欢变 ...

  5. 【题解】 bzoj1875: [SDOI2009]HH去散步 (动态规划+矩阵乘法)

    bzoj1875,懒得复制,戳我戳我 Solution: 看到这道题,看的出是个dp,每个点\(t\)时刻到达的方案数等于\(t-1\)到连过来的点方案数之和 但又因为题目有要求不能走一样的边回去不是 ...

  6. [bzoj1875][SDOI2009] HH去散步 [dp+矩阵快速幂]

    题面 传送门 正文 其实就是让你求有多少条长度为t的路径,但是有一个特殊条件:不能走过一条边以后又立刻反着走一次(如果两次经过同意条边中间隔了别的边是可以的) 如果没有这个特殊条件,我们很容易想到dp ...

  7. bzoj1875 [SDOI2009]HH去散步——矩阵快速幂

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1875 有个限制是不能走回头路,比较麻烦: 所以把矩阵中的元素设成边的经过次数,单向边之间就好 ...

  8. bzoj1875 [SDOI2009]HH去散步 矩阵快速幂

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=1875 题解 如果没有这个"不能立刻沿着刚刚走来的路走回",那么这个题就是一 ...

  9. bzoj 1875: [SDOI2009]HH去散步 -- 矩阵乘法

    1875: [SDOI2009]HH去散步 Time Limit: 20 Sec  Memory Limit: 64 MB Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走, ...

随机推荐

  1. 【php】php 生僻知识点认知

    资料引用来源:http://www.runoob.com/php/php-tutorial.html ​ 表单提交中, 变量名中的点和空格被转换成下划线.例如 <input name=" ...

  2. python 复习函数 装饰器

    # 函数 —— 2天 # 函数的定义和调用 # def 函数名(形参): #函数体 #return 返回值 #调用 函数名(实参) # 站在形参的角度上 : 位置参数,*args,默认参数(陷阱),* ...

  3. Educational Codeforces Round 47 (Rated for Div. 2) :A. Game Shopping

    题目链接:http://codeforces.com/contest/1009/problem/A 解题心得: 题意就是给你两个数列c,a,你需要从c中选择一个子串从a头开始匹配,要求子串中的连续的前 ...

  4. react ant-design自定义图标

    ant-design给我们提供的图标不够怎么办呢?答案是我们可以自定义图标. 自定义图标也挺简单的,现在图标推荐用svg格式,那么我们就需要制作svg图片. 下面让我们看看如果制作svg图片吧. 1. ...

  5. 用ServiceStack操作使用redis的问题

    最近在学习Redis,查阅网上很多资料后使用SericeStack连接redis.在nuget中下载ServiceStack.Redis,主要使用到四个dll 但是运行之后会出现一堆奇怪问题:没有实现 ...

  6. 实用脚本 4 -- Makefile(不同文件下的多个可执行文件or静态库编译到同一目录下)

    不同文件下的多个可执行文件编译到同一目录下,这样方便观察编译结果,从而方便进程操作.使用时根据自己的需要在进行局部修改(如 链接库.目标文件等等). 1..bashrc 中设置编译主目录(例如) ex ...

  7. Mysql数据库的压力

    rationalError: (2006, 'MySQL server has gone away') 2017年10月10日 20:04:43 阅读数:377 问题描述 使用django+celer ...

  8. 「日常训练」「小专题·图论」 Frogger (1-1)

    题意 分析 变形的dijkstra. 分析题意之后补充. 代码 // Origin: // Theme: Graph Theory (Basic) // Date: 080518 // Author: ...

  9. 【赛后补题】(HDU6228) Tree {2017-ACM/ICPC Shenyang Onsite}

    这条题目当时卡了我们半天,于是成功打铁--今天回来一看,mmp,贪心思想怎么这么弱智.....(怪不得场上那么多人A了 题意分析 这里是原题: Tree Time Limit: 2000/1000 M ...

  10. vue之vue-cookies使用

    一.安装vue-cookies npm install --save vue-cookies 或者 yarn add vue-cookies 二.引入vue-cookie // 方式一:require ...