[BZOJ1297/Luogu4159][SCOI2009]迷路

题目链接:

BZOJ1297

Luogu4159

首先考虑距离只有\(0,1\)的情况

那么如果设\(f[t][i][j]\)表示\(i\)\(j\)\(t\)时刻的方案数,有转移方程:

\(f[t][i][j]=\sum f[t-1][i][k]*f[t-1][j][k]\)

如果把\(f[t]\)看成一个\(n*n\)的矩阵就是\(f[t]=f[t-1]*f[t-1]\)

那么就可以矩阵快速幂。

现在考虑距离更大的情况:

若有一条距离为\(x\)的边\((i,j)\),那么可以把它拆成\(x\)条长度为\(1\)的边

对每一个点建一些“虚点”,\(P(i,1)\)代表\(i\)\(P(i,j)(j>1)\)代表\(i\)的其他虚点,那么就将\(P(i,1),P(i,2),\cdots,P(i,x)\)连上边,再连上\(P(i,x),P(j,1)\)即可。

矩阵忘记初始化。。调了1h+。。。

时间复杂度 \(O((9n)^3log_2t)\)

代码:

#include <cstdio>
#include <cstring>
#define Pos(i,j) (((i)-1)*9+(j))int n,m,t;
struct Matrix{int a[105][105];Matrix(){memset(a,0,sizeof a);}}f;inline Matrix operator*(const Matrix &a,const Matrix &b)
{Matrix Res;for(register int i=1;i<=m;++i)for(register int k=1;k<=m;++k)for(register int j=1;j<=m;++j)Res.a[i][j]=(Res.a[i][j]+a.a[i][k]*b.a[k][j])%2009;return Res;
}inline Matrix operator^(Matrix Bas,int x)
{Matrix Res;for(int i=1;i<=m;++i)Res.a[i][i]=1;for(;x;x>>=1,Bas=Bas*Bas)if(x&1)Res=Res*Bas;return Res;
}int main()
{scanf("%d%d",&n,&t),m=n*9;for(int i=1;i<=n;++i){for(int j=1;j<9;++j)f.a[Pos(i,j)][Pos(i,j+1)]=1;for(int j=1,d;j<=n;++j)if(scanf("%1d",&d),d)f.a[Pos(i,d)][Pos(j,1)]=1;}Matrix Res=f^t;printf("%d\n",Res.a[Pos(1,1)][Pos(n,1)]);return 0;
}

转载于:https://www.cnblogs.com/LanrTabe/p/10513300.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中的getfirst_Java LinkedList getFirst()用法及代码示例

Java.util.LinkedList.getFirst()方法用于从LinkedList或列表开头的元素中获取或检索第一个元素。用法:LinkedList.getFirst()参数&#xff1a;此方法不带任何参数。返回值&#xff1a;此方法返回第一个元素或列表开头的元素。以下示例程序旨在说明Java.util.LinkedList.getFir…

mybatis数据库数据分页问题

http://www.cnblogs.com/jcli/archive/2011/08/09/2132222.html 借花献佛&#xff0c;天天进步

安装 Windows Server 2008

安装 Windows Server 2008 本文档提供有关安装 Windows Server 2008 操作系统的信息。还提供可以用于解决在安装期间可能出现的问题的信息。 安装过程分为几个阶段。系统将提示您输入一些基本信息&#xff0c;然后&#xff0c;安装程序将复制文件并重新启动计算机。最后&#x…

基于mykernel完成多进程的简单内核

学号351 原创作品转载请注明出处 https://github.com/mengning/linuxkernel/ mykernel简介 mykernel是由孟宁老师建立的一个用于开发您自己的操作系统内核的平台&#xff0c;基于Linux Kernel 3.9.4 source code mykernel的源代码 https://github.com/mengning/mykernel &…

java swing 一闪而过_Java代码,为什么图形会一闪而过,怎么修改?

//未完成&#xff1a;会一闪而过importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.awt.geom.*;publicclassExample17_11extendsFrame{//声明成员变量privatestaticGraph...//未完成&#xff1a;会一闪而过import java.awt.*;import java.awt.event.*;i…

走钢索的人---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十七)...

架构师是个很神圣的词。盖茨&#xff0c;世界首富。微软&#xff0c;世界最大最富有的软件公司。盖茨是微软的首席架构师。 好多程序员流口水&#xff0c;一听某人是架构师&#xff0c;就两眼发亮&#xff0c;比技术总监的头衔还要厉害。 一想起架构师&#xff0c;大家就想起那…

iOS开发:通过经纬度获得城市、省份等信息

iOS系统自带定位&#xff0c;用CLLocationManager就可以轻松的实现定位的操作&#xff0c;获得的是一组经纬度&#xff0c;当然&#xff0c;也可以根据给出的经纬度获取相应的省份、城市、街道等信息&#xff0c;下面就看一个根据经纬度获得城市的demo&#xff1a;因为获取经纬…

jsonp原理

借助script标签发送跨域请求&#xff0c;只支持get方法 客户端&#xff1a;client.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>JSONP 客户端</title> </head> <body><s…

.net内存回收与Dispose﹐Close﹐Finalize方法

一. net的对象使用一般分为三种情况﹕ 1.创建对象 2.使用对象 3.释放对象 二.创建对象 1.创建对象实际分为两个步骤﹕变量类型宣告和初始化对象 2.变量类型宣告(declare),如﹕ FileStream fs这行代码会在当前的变量作用域空间(栈或堆)里建立一个叫做fs的变量﹐至少四个字节吧(因…

19、Qt线程(四):继承QRunnable类

一、功能说明 1、通过继承QRunnable&#xff0c;重写run的方式实现多线程 2、点击“开始”按钮启动子线程&#xff1b; 二、项目创建 1、新建Qt Widgets Application应用&#xff0c;名称为Runnable&#xff0c;基类选择QMainWindow&#xff1b; 2、MainWindow.ui中放入一…

JavaScript:学习笔记(9)——Promise对象

JavaScript:学习笔记(9)——Promise对象 引入Promise Primose是异步编程的一种解决方案&#xff0c;比传统的解决方案回调函数和事件更加合理和强大。如下面为基于回调函数的Ajax操作&#xff1a; request.onreadystatechange function () {if (request.readyState 4) {if (r…

支持java虚拟主机_为何缺乏支持Java的虚拟主机

现在很多站长们&#xff0c;都青睐于香港虚拟主机建站。现在常见的是asp和PHP的程序空间很多&#xff0c;但是Java的少之又少&#xff0c;下面小编我给大家聊一聊&#xff01;一、香港Java虚拟主机成本高使用Java程序建站&#xff0c;就必须要用支持Java程序的香港虚拟主机的了…

C#调用ORACLE存储过程返回结果集及函数

ORACLE段&#xff1a; 首先在ORACLE建立PACKAGE和PACKAGE BODY&#xff0c;将在这里面定义函数和存储过程返回结果集。 1&#xff1a;建立PACKAGE&#xff1a; CREATE OR REPLACE package SCOTT.pk_wt is type mytype is ref cursor; procedure p_wt(mycs out mytype); functio…

tab切换

(function(){var tit $("#tab a"),con $("#tcontent>div"),cur cur;tit.mousemove(function(){var index tit.index(this);$(this).addClass(cur).siblings().removeClass(cur);con.eq(index).show().siblings().hide();}); })();原生js的tab切换 v…

组件传参

props on emit自定义方法 ref slot 事件总线 vuex (详细等有空写&#xff0c;先记着) es6新特性转载于:https://www.cnblogs.com/mokani/p/10520714.html

cocos2dx java 调用lua_cocos2dx之C++调用Lua

1&#xff0e;引入头文件#include "cocos2d.h"#include "CCLuaEngine.h"USING_NS_CC;using namespace std;extern "C"{#include "lua.h"#include "lualib.h"#include "lauxlib.h"}2导入Lua文件如果是cocos2dx的Lu…

Mysql 监控小脚本

MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB公司开发&#xff0c;目前属于Oracle公司。Mysql是最流行的关系型数据库管理系统&#xff0c;在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System&#xff1a;关系数据库管理系统)应用软件之一…

93号涨0.86元售6.2元/升 20日油价正式上调

93号涨0.86元售6.2元/升 20日油价正式上调 据悉&#xff0c;自6月20日起汽油、柴油价格每吨提高1000元&#xff0c;航空煤油价格每吨提高1500元。 上调后全国汽油、柴油平均零售价分别为&#xff1a;97号汽油6.6元/升&#xff0c;93号汽油6.2元/升&#xff0c;90号汽油5.8元/升…

eclipse 新建java无scr_解决eclipse中没有js代码提示的问题

自学js&#xff0c;发现eclipse中不管js文件、html文件、jsp文件没有都没js代码的提示&#xff0c;对于js代码也不报错&#xff0c;有时候就因为单词敲错却查了很久没查出来&#xff0c;很烦很难受。在网上找了很多方法&#xff0c;都没有解决&#xff0c;特别是有个在javascri…

C# 互通操作 (二)基础知识1

[DllImport("user32.dll", EntryPoint "MessageBox")] public static extern int DebugWin(int hwnd, string content, string lpcaption, int wType); 讲解下参数的含义EntryPoint 是指向Dll中的一个方法当设定了EntryPoint的指向后 自己定义的方法名就不…