BZOJ_1875_[SDOI2009]HH去散步_矩阵乘法
BZOJ_1875_[SDOI2009]HH去散步_矩阵乘法
Description
Input
Output
一行,表示答案。
Sample Input
0 1
0 2
0 3
2 1
3 2
Sample Output
// luogu-judger-enable-o2
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define mod 45989
int n,m,t,A,B,xx[123],yy[123];
struct Mat {
int v[123][123];
Mat(){memset(v,0,sizeof(v));}
Mat operator*(const Mat &x)const {
Mat re;int i,j,k;
for(i=1;i<=m;i++) {
for(j=1;j<=m;j++) {
for(k=1;k<=m;k++) {
(re.v[i][j]+=v[i][k]*x.v[k][j]%mod)%=mod;
}
}
}
return re;
}
};
inline Mat qp(Mat x,int y) {
Mat I;
int i;
for(i=1;i<=m;i++) I.v[i][i]=1;
while(y) {
if(y&1ll) I=I*x;
x=x*x;
y>>=1;
}
return I;
}
int main() {
scanf("%d%d%d%d%d",&n,&m,&t,&A,&B); A++; B++;
int i,x,y,j;
for(i=1;i<=m;i++) {
scanf("%d%d",&x,&y); x++; y++;
xx[i]=x; yy[i]=y;
xx[i+m]=y; yy[i+m]=x;
}
m*=2;
Mat g;
for(i=1;i<=m;i++) {
if(xx[i]==A) {
g.v[m+1][i]=1;
}
if(yy[i]==B) {
g.v[i][m+2]=1;
}
for(j=1;j<=m;j++) if(yy[i]==xx[j]&&i!=j+m/2&&j!=i+m/2) {
g.v[i][j]=1;
}
}
m+=2;
Mat T=qp(g,t+1);
printf("%d\n",T.v[m-1][m]);
}
BZOJ_1875_[SDOI2009]HH去散步_矩阵乘法的更多相关文章
- 1875. [SDOI2009]HH去散步【矩阵乘法】
Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又 ...
- BZOJ 1875: [SDOI2009]HH去散步(矩阵乘法)
首先,题意就把我们引向了矩阵乘法,注意边长m<=60,那么就按边建图,变成一个120个点的图,然后乱搞就行了。 PS:WA了N久改了3次终于A了QAQ CODE: #include<cst ...
- [SDOI2009]HH去散步 「矩阵乘法计数」
计数问题也许可以转化为矩阵乘法形式 比如若该题没有不能在一条边上重复走的条件限制,那么直接将邻接矩阵转化为矩阵乘法即可 故 矩阵乘法计数 对于计数问题,若可以将 \(n\) 个点表示成 \(n \ti ...
- BZOJ.1875.[SDOI2009]HH去散步(DP 矩阵乘法)
题目链接 比较容易想到用f[i][j]表示走了i步后到达j点的方案数,但是题目要求不能走上一条走过的边 如果这样表示是不好转移的 可以考虑边,f[i][j]表示走了i步后到达第j条边的方案数,那么有 ...
- BZOJ 1875 [SDOI2009]HH去散步 ——动态规划 矩阵乘法
发现t非常大,所以大概就是快速幂一类的问题了, 然后根据k^3logn算了算,发现k大约是边数的时候复杂度比较合适. 发现比较麻烦的就是前驱的记录,所以直接把边看做点,不能走反向边,但是可以走重边,然 ...
- BZOJ 1875: [SDOI2009]HH去散步( dp + 矩阵快速幂 )
把双向边拆成2条单向边, 用边来转移...然后矩阵乘法+快速幂优化 ------------------------------------------------------------------ ...
- BZOJ-1875 HH去散步 DP+矩阵乘法快速幂
1875: [SDOI2009]HH去散步 Time Limit: 20 Sec Memory Limit: 64 MB Submit: 1196 Solved: 553 [Submit][Statu ...
- [LuoguP2151][SDOI2009]HH去散步_递推_矩阵乘法_图论
HH去散步 题目链接:https://www.luogu.org/problem/P2151 数据范围:略. 题解: 数据范围好小,让人不禁想用一些毒瘤算法,但是失败了. 这种类似时间啊这种有点重复味 ...
- [BZOJ 1875] [SDOI 2009] HH去散步【矩阵乘法】
题目链接:BZOJ - 1875 题目分析: 这道题如果去掉“不会立刻沿着刚刚走来的路走回”的限制,直接用邻接矩阵跑矩阵乘法就可以了.然而现在加了这个限制,建图的方式就要做一些改变.如果我们把每一条边 ...
随机推荐
- 【大前端攻城狮之路】JavaScript函数式编程
转眼之间已入五月,自己毕业也马上有三年了.大学计算机系的同学大多都在北京混迹,大家为了升职加薪,娶媳妇买房,熬夜加班跟上线,出差pk脑残客户.同学聚会时有不少兄弟已经体重飙升,开始关注13号地铁线上铺 ...
- Android studio统计项目总行数
有时候在项目开发中会用到统计项目的总行数功能,今天就教大家如何利用studio进行总行数的统计: 1.打开要统计总行数的项目,按住Ctrl+Shift+A(或者点击导航栏的Help->Find ...
- SQL SERVER 锁资源问题
1204: cannot obtain a LOCK resource 在sql server 锁资源的限制基本是自动优化调整.如果调整过参数,可能在系统大批量查询的时候出现以上错误,或者是 alwa ...
- 基于 HTML5 Canvas 的工控机柜 U 位动态管理
前言 U 是一种表示服务器外部尺寸的单位,是 unit 的缩略语,详细的尺寸由作为业界团体的美国电子工业协会(EIA)所决定.之所以要规定服务器的尺寸,是为了使服务器保持适当的尺寸以便放在铁质或铝质的 ...
- Day17 Django的基础使用和结构
整个Django的访问流程: 浏览器 urls: http://127.0.0.1:8000/timer url.py: 1, http://127.0.0.1:8000/timer GET 无请求数 ...
- YUV420格式解析
一般的的YUV420图像格式实际上是Y'UV,420指的是其在Y U V上面的采样率.在YUV420的格式中,首先存储每一个像素的Y'值,然后跟着存储的是每2*2方阵采样一次的U值,最后存储的是每2* ...
- cannot import name '_imaging' 与No module named PIL解决方法
今天学习廖雪峰的python 第三方模块pillow一章. 直接使用from PIL import Image 会报"No module named PIL",显然这是没有安装pi ...
- Web开发问题记录
1.先说一个CSS的:CSS中带有中文(比如字体定义)的属性定义最好放在该选择器定义诸项的最后一条,为什么----编码格式问题. 2.其实自己也可以用自己写的DispatcherServlet+jsp ...
- PHP合并数组的三种方法的分析与比较
常用的合并数组的方法有三种:array_merge().array_merge_recursive().+,下面一个一个介绍 array_merge() 此函数合并一个或多个数组,当输入的数组中有相同 ...
- Spring温故而知新 – Spring AOP
AOP的相关专业术语 通知(Advice):定义在连接点做什么 Spring中通知类型:前置通知,后置通知,返回通知,异常通知,环绕通知 连接点(JoinPoint):程序执行过程中拦截的点,Spin ...