51nod1122 机器人走方格 V4
矩阵快速幂求出每个点走n步后到某个点的方案数。然后暴力枚举即可
#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
#define clr(x,c) memset(x,c,sizeof(x))
#define ll long long
int read(){int x=0;char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) x=x*10+c-'0',c=getchar();return x;
}
const int nmax=5;
const int mod=1e9+7;
struct node{ll a[nmax][nmax];node(){clr(a,0);}node operator*(const node&o)const{node ans;rep(i,1,4) rep(j,1,4) {rep(k,1,4) ans.a[i][j]+=a[i][k]*o.a[k][j]%mod;ans.a[i][j]%=mod;}return ans;}
};
node a,b;
int main(){int n=read();rep(i,1,4) rep(j,1,4) if(i!=j) b.a[i][j]=1;rep(i,1,4) a.a[i][i]=1;while(n){if(n&1) a=a*b;b=b*b;n>>=1;}ll ans=0;rep(i,1,4) rep(j,1,4) if(i!=j) rep(k,1,4) if(k!=j&&k!=i) rep(t,1,4) if(t!=i&&t!=j&&t!=k)ans=(ans+a.a[1][i]*a.a[2][j]%mod*a.a[3][k]%mod*a.a[4][t]%mod)%mod;printf("%lld\n",ans);return 0;
}
输入1个数N(0 <= N <= 10^9)
输出走法的数量 Mod 10^9 + 7
1
9
转载于:https://www.cnblogs.com/fighting-to-the-end/p/5866348.html
51nod1122 机器人走方格 V4相关推荐
- 51nod 1118 机器人走方格 解题思路:动态规划 1119 机器人走方格 V2 解题思路:根据杨辉三角转化问题为组合数和求逆元问题
51nod 1118 机器人走方格: 思路:这是一道简单题,很容易就看出用动态规划扫一遍就可以得到结果, 时间复杂度O(m*n).运算量1000*1000 = 1000000,很明显不会超时. 递推式 ...
- 牛客网 - 机器人走方格 (动态规划)
机器人走方格 解法1(排列组合) 公式:Cx+y−2x−1C_{x+y-2}^{x-1}Cx+y−2x−1或Cx+y−2y−1C_{x+y-2}^{y-1}Cx+y−2y−1 注意点: x和y是方 ...
- 程序员面试金典——9.2机器人走方格
程序员面试金典--9.2机器人走方格 问题I: Solution1:我的答案 普通的从左上角走到右下角的题目 动态规划,哈哈啊哈哈哈 class Robot { public:int countWay ...
- 机器人走方格(51Nod-1119)
题目 M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果. 输入 第1行,2个数M,N,中间用空格隔开.( ...
- 51 nod 机器人走方格
从一个长方形的方格的右上角 走到 左下角 , 问一共有多少种不同的路线可以达到 . 1 #include<stdio.h> 2 #include<string.h> 3 #in ...
- 【算法】机器人走迷宫(适用于走迷宫、最短路径算法)-20200412
标题:机器人走迷宫(适用于走迷宫.最短路径算法) 问题描述: 一块矩形方格,含有障碍和可通行格子,求从某一点到另外一点的最短距离?N*M的矩阵: 其中,1代表障碍,0代表可通行:示例:给定二维矩阵 0 ...
- 中南大学复试上机:1021:机器人走迷宫
1021: 机器人走迷宫 时间限制: 1 Sec 内存限制: 128 MB 题目描述 有一个愚蠢的机器人走进一个w*h的迷宫,迷宫里有空地和陷阱.他想要访问迷宫的每个方格,但是它很笨,只会按照指令的 ...
- 【华为机试真题 Python实现】机器人走迷宫
文章目录 题目描述 示例1: 输入: 输出: 示例2: 输入: 输出: 示例3: 输入: 输出: 参考代码 该题出自2020年5月机试由"赫夫曼"提供,祝他早日上岸. 题目描述 机 ...
- 【华为OD机试真题 JAVA】机器人走迷宫
标题:机器人走迷宫 | 时间限制:1秒 | 内存限制:65536K | 语言限制:不限 1. 房间由X*Y的方格组成,例如下图为6*4的大小.每一个方格以坐标(x,y)描述. 2. 机器人固定从方格( ...
- 【华为机试】【校招】【Java】机器人走迷宫(DFS)
■ 题目描述 [机器人走迷宫] 机器人走一个迷宫,给出迷宫的x和y(x*y的迷宫)并且迷宫中有障碍物,输入k表示障碍物有k个,并且会将障碍物的坐标挨个输入. 机器人从0,0的位置走到x,y的位置并且只 ...
最新文章
- 解决老版本eclipse无法完全替换主题的问题
- 现在无法停止通用卷设备_软化和柔顺有什么区别吗?头发粗硬适合拉直还是烫卷?...
- 小区社交应用:如何打破近在眼前的物理障碍和陌生感?
- oracle 删除列 大数据_Oracle 删除指定sql的执行计划。
- VS2005--设置Release模式下调试
- Arrays.toList工具类
- 在PaddlePaddle框架下通过两层全连接网络实现IRIS数据分类
- [常微分方程]Lecture 2: 欧拉数值方法及推广
- 再生核希尔伯特空间和核方法
- 基于javaweb的驾校车辆教练预约系统ssm+Vue
- 2.3.4nbsp;《孙子兵法》的基本原则
- IM即时通讯需要解决的问题
- java使用CLE调用python37
- 利用python如何抓取微博评论?
- 驱动辅助资料(工具,目录,指令,debug经验)
- Web安全 XXE漏洞的 测试和利用.(读取服务器的任何文件 和 收集服务器的内网信息.)
- 固态硬盘、机械硬盘工作原理和区别(内附接口知识)
- Linux系统怎么做安全防护,linux系统安全防护
- select2搜索内容显示搜索词
- 【SpringBoot】SpringBoot常用注解