Mistwald zoj 3497
链接
[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的更多相关文章
- 矩阵快速幂 ZOJ 3497 Mistwald
题目传送门 题意:看似给了一个迷宫,每个点能传送到4个地方,问在P时间能否到达终点 分析:其实是一个有向图,可以用邻接矩阵存图,连乘P次看是否能从1到n*m,和floyd的传递背包思想一样 #incl ...
- ZOJ 3497 Mistwald
矩阵快速幂. 邻接矩阵的$P$次方就是走$P$步之后的方案数,这里只记录能否走到就可以了.然后再判断一下三种情况即可. #pragma comment(linker, "/STACK:102 ...
- zoj3497(经典矩阵乘法)
原以为是用搜索做的题,想了好久都无法想到一个高效正确的解法. 后面发现竟然这就是矩阵的应用! 碉堡! 给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值 ——选自ma ...
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
- ZOJ 3686 A Simple Tree Problem
A Simple Tree Problem Time Limit: 3 Seconds Memory Limit: 65536 KB Given a rooted tree, each no ...
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...
- ZOJ Problem Set - 1392 The Hardest Problem Ever
放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...
- ZOJ Problem Set - 1049 I Think I Need a Houseboat
这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...
- ZOJ Problem Set - 1006 Do the Untwist
今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...
随机推荐
- Spring之旅第五篇-AOP详解
一.什么是AOP? Aspect oritention programming(面向切面编程),AOP是一种思想,高度概括的话是“横向重复,纵向抽取”,如何理解呢?举个例子:访问页面时需要权限认证,如 ...
- Self Host 使用 Exceptionless 实时监控程序运行日志服务
Exceptionless 是一个可以对 ASP.NET Core, ASP.NET MVC,WebAPI, WebForms, WPF, Console 应用提供系统的日志,错误监控.报表等服务实时 ...
- ViewPagerWithRecyclerDemo【RecyclerView+ViewPager实现类似TabLayout+ViewPager效果】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用RecyclerView+ViewPager实现类似TabLayout+ViewPager效果. 效果图 使用步骤 一.项目组织 ...
- XML的创建、解析-C语言
前言:今天在做一个小项目时,客户要求的xml,跟现在有系统要求的不一样,所以要自己重新写函数支持返回,进行简单总结,希望对大家有所帮助. 首先,使用xml函数需要链上动态库libxml2,需要在电脑上 ...
- 记一个 DataBindings遇到的坑,当ComboBox同时绑定DataSource与DataBindings的时候,绑定的元素一定要同名
下面的两个member1 一定要一样才行,不然会导致绑定异常 comboBox1.DisplayMember = "member1"; comboBox1.DataBindings ...
- keil进阶教程
前言 keil只懂得创建软件工程是远远不够的,如果要想顺心使用,应该要懂得部分配置,这样使用心情顺畅,码代码也会越发高效. 设置字号字体 编辑点击编辑菜单,会出现很多子目录,找到配置,点击进入设置页面 ...
- 盘点 Python 中的那些冷知识(一)
小明在日常Code中遇到一些好玩,冷门的事情,通常都会记录下来. 现在已经积攒了一些了,最近打算整理一波,发出来给大家补补.一篇只分享五个,有时间了就整理.不想错过的,千万记得关注一下. 1. 省略号 ...
- Spring异常分析
异常报错 2019-01-14 10:40:18.427 ERROR 11776 --- [ost-startStop-1] o.s.b.w.e.t.TomcatStarter : Error sta ...
- InnoSetup 以命令行自动编译打包
本章介绍,在新建Innosetup的编译脚本iss文件后,在不运行Innosetup软件的基础上,以bat自动编译运行打包. 一.添加Innosetup软件包 下载InnoSetup软件包并解压到bu ...
- 现代Java进阶之路必备技能——2019 版
Java技术的学习阶段有三 第1个是java基础,比如对集合类,并发,IO,JVM,内存模型,泛型,异常,反射,等有深入了解. 第2个是全面的互联网技术相关知识,比如redis,mogodb,ngin ...