【JZOJ5223】B【矩阵乘法】【DFS】

矩阵链乘法 1.问题 矩阵链乘法问题: 设A1,A2,…An为n个矩阵的序列,其中Ai为Pi-1×Pi阶矩阵,这个矩阵链的输入用向量P=<P0,P1…Pn>给出。给定向量P,确定一种乘法次序,使得基本运算的总次数达到最小。 例如,P=<10,100,5,50>,则A1:10×100,A2:100×5,A3:5×50,有两种结合次序, 1)(A1A2)A3:10×100×5+10×5×50=7500 2)A1(A2A3):10×100×50+100×5×50=75000 显然第二种优于第一种。 2 阅读详情

题目大意:

题目链接:https://jzoj.net/senior/#main/show/5223
题目图片:
http://wx4.sinaimg.cn/mw690/0060lm7Tly1fy2w5kn4jbj30in0gk74z.jpg
给定一个 3 × 3 3\times3 3×3的网格图,一开始每个格子上都站着一个机器人。每一步机器人可以走到相邻格子或留在原地,同一个格子上可以有多个机器人。问走 n n n步后,有多少种走法,满足每个格子上都有机器人。答案对 1 0 9 + 7 10^9+7 109+7取模。


思路:

n ≤ 1 0 18 n\leq 10^{18} n≤1018告诉我们什么?
l o g   n ? log\ n? log n?显然不可做。
n ? \sqrt{n}? n ​?显然过不了。
3 × 3 3\times 3 3×3的矩阵?矩阵乘法!

设 f [ i ] [ j ] f[i][j] f[i][j]表示走 n n n步从格子 i i i到格子 j j j的方案数。那么很明显,中间矩阵 a a a就是相邻格子为 1 1 1,否则为 0 0 0。然后枚举每一个起始格子,跑一边矩阵乘法。就可以得到任意两点走 n n n步的方案数。
然后就 D F S DFS DFS每一个格子的机器人最终会走到哪一个格子。然后求 a n s ans ans即可。


代码:

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;

const int MOD=1000000007;
ll n,f[10][10],a[10][10],ans;
bool used[10];
const ll A[10][10]=
{
	{0,0,0,0,0,0,0,0,0,0},
	{0,1,1,0,1,0,0,0,0,0},
	{0,1,1,1,0,1,0,0,0,0},
	{0,0,1,1,0,0,1,0,0,0},
	{0,1,0,0,1,1,0,1,0,0},
	{0,0,1,0,1,1,1,0,1,0},
	{0,0,0,1,0,1,1,0,0,1},
	{0,0,0,0,1,0,0,1,1,0},
	{0,0,0,0,0,1,0,1,1,1},
	{0,0,0,0,0,0,1,0,1,1}
};

void mul(int x)
{
	ll c[10];
	memset(c,0,sizeof(c));
	for (int i=1;i<=9;i++)
		for (int j=1;j<=9;j++)
			c[j]=(c[j]+(f[x][i]*a[i][j]))%MOD;
	memcpy(f[x],c,sizeof(f[x]));
}

void mulself()
{
	ll c[10][10];
	memset(c,0,sizeof(c));
	for (int i=1;i<=9;i++)
		for (int j=1;j<=9;j++)
			for (int k=1;k<=9;k++)
				c[i][j]=(c[i][j]+a[i][k]*a[k][j])%MOD;
	memcpy(a,c,sizeof(a));
}

void ksm(ll m,int x)
{
	while (m)
	{
		if (m&1) mul(x);
		mulself();
		m>>=1;
	}
}

void dfs(int x,ll s)
{
	if (x>9)
	{
		ans=(ans+s)%MOD;
		return;
	}
	for (int i=1;i<=9;i++)
		if (!used[i])
		{
			used[i]=1;
			dfs(x+1,s*f[x][i]%MOD);
			used[i]=0;
		}
}

int main()
{
	cin>>n;
	for (int i=1;i<=9;i++)
	{
		f[i][i]=1;
		memcpy(a,A,sizeof(a));
		ksm(n,i);
	}
	dfs(1,1);
	cout<<ans;
	return 0;
}
opencv读取海康威视摄像头相关配置 1、开发环境 海康威视的网络摄像头使用: 开发工具:vs2015 C++ 海康SDK 2、相关操作 下载海康威视SDK:网址:http://www.hikvision.com/cn/download_61.html • 1:对照自己的开发平台可以下载设备网络SDK_Win32设备网络SDK_Win64,解压到本地文件下: • 2:VS配置 、Opencv配置。参考址 http://blog.youkuaiyun.com/poem_qianmo/article/details/19809337 (建议自己创 阅读详情

相关推荐

【24届计算机校招】面经汇总

这是笔者为了能够记录一下接下来一段时间会看的一些博客视频等汇总。一是为了汇总后常回来看看,而是为了后面的人在这个阶段准备的时候有个参考。现在已经6月底了,大部分高校的夏令营都出来了,而我至今还是夏0营,前几天还为川大会收双非而感到高兴,但遗憾的是川大并没要我。而我另一位双非的朋友已经拿到offer,在决定去南开还是华师了。没有对比就没伤害,我开始怀疑自己的决策是否正确——这段时间的夏令营我都有关注,但我仅报了少部分的几个酒吧舞,而没有选择海投,我觉得只要我认准了一个东西,我拼尽全力就一定能够获取到。

JehanRio's Private Blog 804

Leetcode_动态规划

题目: 原题链接在这里:https://leetcode.com/problems/longest-string-chain/ 最长字符串链。给一个单词列表,找一个词链,使得词链后一个单词由前一个单词增加一个字符得到,求最长词链长度。 解答: 1、根据词链的定义,短的单词可以由长的单词减去单词中一个字符得到。因此可以先对单词列表,按照单词的长度从大到小排序。 参考...

专注Java(全栈)应用开发,求知若渴,虚心若愚,talk is cheap, show me the code. 345

PID控制参数整定(调节方法)原理+图示+MATLAB调试

序 首先最重要的是了解每个参数调节了系统响应的那些属性,通过观察响应从而调节参数改变属性。 PID的作用概述: 1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。 2、I在有系统误差和外力作用时消除偏差、提高精度,同时也会增加响应速度,产生过冲,过大会产生振荡。 3、D抑制过冲和振荡,过小系统会过冲,过大会减慢响应速度。D的另外一个作用是抵抗外界的突发干扰,阻止系统的突变。 同时调节的顺序是:P>I>D 下面了解的一个很重要的就是调节的目标,也就是最好的响应曲线.

viafcccy的博客 16万+

[jzoj 5223] 【GDOI2018模拟7.12】B {矩阵乘法+dfs}

题目 Description 给定一个3*3的网格图,一开始每个格子上都站着一个机器人。每一步机器人可以走到相邻格子或留在原地,同一个格子上可以有多个机器人。问走n步后,有多少种走法,满足每个格子上都有机器人。答案对10^9+7取模。 Input Output 解题思路 从左到右,从上到下,分别标识为1到9 设f[i][j]f[i][j]f[i][j]表示从i处走到j处的方案数。然后可以矩阵...

Nowed 577

为什么PCB设计中的50Ω阻抗如此重要?从USB到以太网的实战解析

本文深入解析了PCB设计中50Ω特征阻抗的核心重要性及其工程权衡起源。文章从传输线理论出发,阐释了阻抗匹配对防止信号反射、确保信号完整性的关键作用,并对比了USB、以太网等不同应用场景的阻抗标准。同时,文章结合实际案例,剖析了在两层板等简单设计中实现精准阻抗控制的难点与实战解决方案。

weixin_29268385的博客 297

大模型——Dify:知识库与外部知识库

摘要 Dify的知识库功能为开发者提供了动态知识管理解决方案,超越了大模型静态预训练数据的限制。知识库支持多种文档格式(如txt、pdf、docx等),通过文档分段、索引设置和检索优化机制提升LLM的响应准确性。系统提供高质量和经济两种索引模式,前者采用向量化检索技术,后者使用关键词匹配以降低成本。知识库支持元数据管理,包括自动生成的内置元数据和用户自定义元数据,便于内容分类和检索。对于高级需求,Dify还支持连接外部知识库,通过API实现跨平台数据共享和检索优化,满足企业级知识管理需求。

731

为什么神经网络参数不能全部初始化为全0?

假设我们现在需要初始化的神经网络如下所示:我们初始化权值为其中W1代表输入层到隐藏层的权值矩阵,W2代表隐藏层到输出层的权值矩阵。假设网络的输入为[x1,x2,x3],然后通过网络的正向传播,可以得出:由于我们可以知道:从上面可以知道,此时隐藏层的值是相同的,然后经过激活函数f后,得到的a4,a5仍然是相同的,如下:最终网络的输出为:此时,假设我们的真实输出为y,则均方误差损失函数可以表示为:到了...

qq_15505637的博客 2万+

Cadence PCB仿真使用Allegro PCB SI S参数配置方法图文教程

S参数即S-Parameter是指散射参数,描述信号在传输线中的正反向传输和正反向反射的情况。本文讲述在使用Allegro PCB SI进行信号完整性仿真前,S参数的配置方法。

fydar的博客 2177

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence F: ⋅ F0=0,F1=1; ⋅ Fn=Fn−1+Fn−2 (n≥2).

老李2009 344

RK3588 Android12 添加HDMI和喇叭声音通道切换选项

rk3588 android12系统默认接hdmi out时,声音会切换到hdmi out输出,主板声卡喇叭输出会没有声音输出。现在添加一个选项设置hdmi out时,声音可以保持主板声卡喇叭输出。

Android系统开发笔记 4163

【PCIe 总线及设备入门学习专栏 1.3 -- PCIe 基础知识 lane和link介绍】

PCIe RC(Root Complex)是PCIe树的根节点,一个RC 可以包括多个 RP(Root Port),例如一个16 条 lane的PCIe RC 可以包括4个RP(4个x4的),或者8个RP(8个x2的)等等。在该模式下,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式。国内应该有公司做出相应的phy芯片(例如芯动科技、牛芯半导体),毕竟常见的pcie 3.0才8 Gbps的速率,最新的6.0才64Gbps。

CodingCos的博客 2104

【jzoj5223】【GDOI2018模拟7.12】【B】【矩阵乘法】

题目大意给定一个3*3的网格图,一开始每个格子上都站着一个机器人。每一步机器人可以走到相邻格子或留在原地,同一个格子上可以有多个机器人。问走n步后,有多少种走法,满足每个格子上都有机器人。答案对10^9+7取模。解题思路考虑到点数较小,暴力枚举每个点最后到哪里,用矩阵乘法算出从一个点到能一个点的方案数,乘起来即可。code#include<cstdio> #include<cmath> #inclu

inklutcuah’s blog 491

【树莓派安装Homeassistant及基本配置】

时隔一年,我又重新开始玩Homeassistant,发现其中奥妙无穷,惊喜不断。在我浅薄的认知中要学好嵌入式,必须玩过Homeassistant,并且玩出自己的名堂!因为这是最贴切实际的生活应用没有之一,每月更新使得唯有活水来;拥抱大千使得永葆青春的活力;鬼斧神工的操作精彩纷呈,可以堪称软件与硬件的完美落地!

vor234的博客 1万+

jzoj5223-B【矩阵乘法】

正题 题目大意 3∗33*33∗3的矩阵上每个格子都有机器人,每次可以向相邻格子移动或不动(一个格子上可以有多个机器人),求移动nnn次后每个格子上都有机器人的移动方案数。 解题思路 用矩阵乘法计算出每个格子的机器人移动到每个格子的方案总数。 在枚举最终机器人状态。 之后用矩阵乘法算出来的答案统计这个状态的方案数。 codecodecode #include&lt;cstdio&gt; #i...

QuantAsk 476

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jzoj5223 [GDOI2018模拟7.12]B 矩阵乘法

Description 给定一个3*3的网格图,一开始每个格子上都站着一个机器人。每一步机器人可以走到相邻格子或留在原地,同一个格子上可以有多个机器人。问走n步后,有多少种走法,满足每个格子上都有机器人。答案对10^9+7取模。 n&lt;=10^18 Solution n非常大,考虑logn做法 我们把九个机器人一一标号,然后根据四连通建邻接矩阵,矩阵乘法转移。最后暴力枚举一下...

olahiuj的博客 437

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【洛谷P1236】算24点【搜索】

比较简单的搜索题,注意细节即可

stoorz 1666

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【洛谷P4205】智慧珠游戏【dfs】

题目大意: 题目链接:https://www.luogu.org/problem/P4205 智慧珠游戏拼盘由一个三角形盘件和 12 个形态各异的零件组成。拼盘的盘 件如图 1 所示 可以放到盘件的任一位置,条件是能有地方放,且 尺寸合适,所有的零件都允许旋转(0º、90º、180º、270º)和翻转(水平、竖直)。 现给出一个盘件的初始布局,求一种可行的智慧珠摆放方案,使所有的零件 都能放...

stoorz 1555

【JZOJ5776】小x游世界【换根法】【DP】【DFS】

题目大意: 题目链接:https://jzoj.net/senior/#main/show/5776 题目图片: http://wx4.sinaimg.cn/mw690/0060lm7Tly1fvjhzcpt7jj30j50f1aaw.jpg http://wx1.sinaimg.cn/mw690/0060lm7Tly1fvjhzchmayj30j30e5t8x.jpg http://wx4.si...

stoorz 1091

【JZOJ3888】正确答案【模拟】【dfs】

题目: 题目链接:https://jzoj.net/senior/#main/show/3888 小H与小Y刚刚参加完UOIP外卡组的初赛,就迫不及待的跑出考场对答案。 “吔,我的答案和你都不一样!”,小Y说道,”我们去找神犇们问答案吧”。 外卡组试卷中共有m道判断题,小H与小Y一共从其他n个神犇那问了答案。之后又从小G那里得知,这n个神犇中有p个考了满分,q个考了零分,其他神犇不为满分或零分。这...

stoorz 989

【CSP-S 2019】【洛谷P5666】树的重心【主席树】【树状数组】【dfs】

菜菜菜菜菜菜菜 终于改出来了qwq

stoorz 788

【洛谷P5651】基础最短路练习题【dfs】【并查集】

题目: 给定nnn个点mmm条边的无向简单联通图GGG,边有边权。保证没有重边和自环。 定义一条简单路径的权值为路径上所有边边权的异或和。 保证GGG中不存在简单环使得边权异或和不为0。 QQQ次询问xxx到yyy的最短简单路径。 思路: 题目保证了每一个简单环的异或和均为0。也就是说对于环上的任意两点(x,y)(x,y)(x,y),从x→yx\to yx→y的两条路径的权值相等。 所以对于每一...

stoorz 704

数字游戏【dfs】

卡常神题orzorz

stoorz 676

【CSP-S 2019】【洛谷P5658】括号树【dfs】【二分】

入门组选手承受范围之内233

stoorz 647

【JZOJ 3470】最短路【最短路】【DFS】

题目大意: 题目链接:https://jzoj.net/senior/#main/show/3470 给定一个nnn个点mmm条边的有向图,有kkk个标记点,要求从规定的起点按任意顺序经过所有标记点到达规定的终点,问最短的距离是多少。 思路: 最短路+DFS 首先,对于每一个标记点和sss点,以它们为起点跑一边SPFA,由于k≤10k≤10k\leq10,所以我们就可以得到一个只...

stoorz 565

【JZOJ1252】【洛谷P5194】天平【搜索】

折半搜索好题,居然在考试时想出来了awa

stoorz 554

【洛谷P5652】基础博弈练习题【dfs】【博弈论】

题目: 题目链接:https://www.luogu.org/problem/P5652 YSGH和YGSH在打膈膜,YSGS在旁边围观。 规则是这样的,先给定一个正整数mmm和一个nnn个数序列BBB,一开始有一个棋子在BBB的第一个位置,并将B1B_1B1​减去111。此后双方轮流操作,每次操作,假设当前棋子在iii,可以把棋子移到一个位置jjj,满足j∈[i,min(i+m,n)]j\in[...

stoorz 445
上一篇: 【JZOJ3518】进化序列【模拟】
下一篇: 【POJ3417】Network【LCA】【差分】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值