HDU:2604nbsp;Queuing(发现似乎所有…

2023-10-20 04:08

本文主要是介绍HDU:2604nbsp;Queuing(发现似乎所有…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

此题的题意是求出长度为L的 ,有f 和m 组成的窜中找出没有存在 fmf 和fff 的窜的个数

 

求解f[n]=f[n-1]+f[n-3]+f[n-4];我们就可以构造出这样的 矩阵

HDU:2604 <wbr>Queuing(发现似乎所有递推题都可以用矩阵乘法来做)

HDU:2604 <wbr>Queuing(发现似乎所有递推题都可以用矩阵乘法来做)
这是搜的代码:

 

#include <iostream>
using namespace std;

const int N = 4;

struct Mat
{
int matrix[N][N];
};

Mat mat, mt;
int n, m;

Mat mul(Mat a, Mat b)
{
int i, j, k;
Mat c;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
{
c.matrix[i][j] = 0;
for (k = 0; k < N; k++)
{
c.matrix[i][j] += a.matrix[i][k] * b.matrix[k][j];
c.matrix[i][j] %= m;
}
}
return c;
}

Mat solve(int m)
{
Mat mt;

if (m == 1)
return mat;
if (m & 1)
return mul(solve(m - 1), mat);
else
{
mt = solve(m / 2);
return mul(mt, mt);
}
}

void init()
{
int i, j;
for (i = 0; i < N; ++i)
{
mat.matrix[0][i] = 1;
}
mat.matrix[0][1] = 0;
for (i = 1; i < N; ++i)
{
for (j = 0; j < N; ++j)
{
if (i - j == 1)
mat.matrix[i][j] = 1;
else
mat.matrix[i][j] = 0;
}
}
}
int main()
{
Mat ans;
int f41[] =
{ 9, 6, 4, 2 }, sum, f04[] =
{ 0, 2, 4, 6, 9 };
//freopen("t","r",stdin);
while (scanf("%d %d", &n, &m) != EOF)
{
if (n < 5)
{
printf("%d\n", f04[n] % m);
}
else
{
init();
ans = solve(n - 4);
sum = 0;
for (int k = 0; k < N; k++)
{
sum += ans.matrix[0][k] * f41[k];
sum %= m;
}
printf("%d\n", sum);
}
}
return 0;
}

 

这篇关于HDU:2604nbsp;Queuing(发现似乎所有…的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/244548

相关文章

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

SpringCloud之consul服务注册与发现、配置管理、配置持久化方式

《SpringCloud之consul服务注册与发现、配置管理、配置持久化方式》:本文主要介绍SpringCloud之consul服务注册与发现、配置管理、配置持久化方式,具有很好的参考价值,希望... 目录前言一、consul是什么?二、安装运行consul三、使用1、服务发现2、配置管理四、数据持久化总

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

hdu 2093 考试排名(sscanf)

模拟题。 直接从教程里拉解析。 因为表格里的数据格式不统一。有时候有"()",有时候又没有。而它也不会给我们提示。 这种情况下,就只能它它们统一看作字符串来处理了。现在就请出我们的主角sscanf()! sscanf 语法: #include int sscanf( const char *buffer, const char *format, ... ); 函数sscanf()和