链接

[https://vjudge.net/contest/294259#problem/K]

题意

就是有个m*n矩阵

出发(1,1) 出口(m,n)

然后给出每个点能到大的四个位置

而且一旦到达终点就得出去不能往回走

然后给出多次询问,p表示是否恰好刚好p步走到终点,如果还可能到其他点就是maybe

否则就是true ,如果不能到达就false

分析

就是离散数学里的那个可达矩阵,这里由于数据较小。就总共m*n个点就行了

然后再加上矩阵快速幂即可

还有就是关于getchar这个输入时要注意。我tm气死了,被这个读入给搞了

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int t,N,M,p,q,s;
struct Matrix{
int m[50][50];
}I,ans,A;
Matrix Mul(Matrix a,Matrix b)
{
int i, j, k;
Matrix c;
for(i = 1; i <= s; i++)
{
for(j = 1; j <= s; j++)
{
c.m[i][j]=0;
for(k = 1; k <= s; k++)
{
c.m[i][j]+=(a.m[i][k]*b.m[k][j]);
}
}
}
return c;
} Matrix quickpagow(int n)
{
Matrix m = A, b = I;
while(n)
{
if(n & 1)
b = Mul(b,m);
n = n >> 1;
m = Mul(m,m);
}
return b;
}
int main(){
//ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin>>t;
while(t--){
memset(I.m,0,sizeof(I.m));
memset(ans.m,0,sizeof(ans.m));
memset(A.m,0,sizeof(A.m));
cin>>M>>N;
getchar();
s=M*N;
for(int i=1;i<=s;i++)
I.m[i][i]=1;
int x1,y1,x2,y2,x3,y3,x4,y4;
for(int i=1;i<=M;i++){
for(int j=1;j<=N;j++){
scanf("((%d,%d),(%d,%d),(%d,%d),(%d,%d))",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
getchar();
if(i==M&&N==j) continue;
A.m[(i-1)*N+j][(x1-1)*N+y1]=1;
A.m[(i-1)*N+j][(x2-1)*N+y2]=1;
A.m[(i-1)*N+j][(x3-1)*N+y3]=1;
A.m[(i-1)*N+j][(x4-1)*N+y4]=1;
}
}
cin>>q;
while(q--){
cin>>p;
ans=quickpagow(p);
if(ans.m[1][s]==0)
cout<<"False\n";
else{
bool flag=0;
for(int i=1;i<=s-1;i++)
if(ans.m[1][i]){
flag=1; break;
}
if(flag) cout<<"Maybe\n";
else cout<<"True\n";
}
}
cout<<"\n";
}
return 0;
}

Mistwald zoj 3497的更多相关文章

  1. 矩阵快速幂 ZOJ 3497 Mistwald

    题目传送门 题意:看似给了一个迷宫,每个点能传送到4个地方,问在P时间能否到达终点 分析:其实是一个有向图,可以用邻接矩阵存图,连乘P次看是否能从1到n*m,和floyd的传递背包思想一样 #incl ...

  2. ZOJ 3497 Mistwald

    矩阵快速幂. 邻接矩阵的$P$次方就是走$P$步之后的方案数,这里只记录能否走到就可以了.然后再判断一下三种情况即可. #pragma comment(linker, "/STACK:102 ...

  3. zoj3497(经典矩阵乘法)

    原以为是用搜索做的题,想了好久都无法想到一个高效正确的解法. 后面发现竟然这就是矩阵的应用! 碉堡! 给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值  ——选自ma ...

  4. ZOJ People Counting

    第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ  3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...

  5. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  6. ZOJ Problem Set - 1394 Polar Explorer

    这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...

  7. ZOJ Problem Set - 1392 The Hardest Problem Ever

    放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...

  8. ZOJ Problem Set - 1049 I Think I Need a Houseboat

    这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...

  9. ZOJ Problem Set - 1006 Do the Untwist

    今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...

随机推荐

  1. 腾讯云服务器搭建Apache/PHP/MySQL环境

    软件环境 Windows Server 2008 R2 企业版 SP1 64位 刚刚进入 Windows Server ,你会看到以下界面: 列出了服务器的基础信息和常用配置 下载 XAMPP htt ...

  2. Redis 小记

    最近感觉自己像是又回到了起点,知识层面上落人太多,尤其是去年早些时候几乎啥也没干成,觉得什么也不会了,只能再次从零开始,所以决定再喝两个疗程的巩固巩固. 话不多说,我们先来看看 Redis 官方是怎么 ...

  3. Scanner对象及其获取数据出现小问题和解决方案

    Scanner类简介: Java 5添加了java.util.Scanner类,我们可以通过Scanner类来获取用户输入.它是以前的StringTokenizer和Matcher类之间的某种结合.由 ...

  4. mysql的学习笔记(四)

    ---恢复内容开始--- 1.插入操作 INSERT (1)INSERT table_name(col_name,...) VALUES(...),(....) CREATE TABLE user( ...

  5. Spring Boot 中的静态资源到底要放在哪里?

    当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥Spring Boot 中的静态资源加载问题:"松哥,我的HTML页面好像没有样式?& ...

  6. RecyclerViewSelectableAdapterDemo【封装BaseSelectableAdapter用于多选、单选,以及切换选中状态等功能】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录封装单选.多选.切换选中状态的BaseSelectableAdapter基类,配合Recyclerview使用. 注意:此Dem ...

  7. Windows 10 安装ElasticSearch(2)- MSI安装ElasticSearch和安装Kibana

    翻阅上篇文章:Windows 10 安装 ElasticSearch 上次写的是下载Zip包安装的,在下载页面 发现有 MSI (BETA) 的下载可选项.了解之后发现MSI安装也值得尝试. MSI安 ...

  8. Yii2设计模式——设计模式简介

    我们首先来思考一个问题:作为工程师,我们的价值是什么? 笔者认为是--解决用户问题. 我们的任何知识和技能,如果不能解决特定的问题,那么就是无用的屠龙之术:我们的任何经验,如果不能对解决新的问题有用, ...

  9. MongoDB学习(配置用户账户和访问控制)

    理解admin数据库 安装MongoDB时,会自动创建admin数据库,这是一个特殊的库.有些用户账户角色赋予用户操作多个数据库的权限,而这些用户只能在admin数据库中创建.要创建有权操作所有数据库 ...

  10. arcgis api for js入门开发系列十九图层在线编辑

    本篇主要讲述的是利用arcgis api实现图层在线编辑功能模块,效果图如下: 实现思路: 1.arcgis server发布的FeatureServer服务提供的图层在线编辑能力: 2.实现的在线编 ...