hdu 2604 Queuing(动态规划—>矩阵快速幂,更通用的模版)
最早不会写,看了网上的分析,然后终于想明白了矩阵是怎么出来的了,哈哈哈哈。
因为边上的项目排列顺序不一样,所以写出来的矩阵形式也可能不一样,但是都是可以的
//愚钝的我不会写这题,然后百度了,照着大神的题解,有了如下的东东:
//根据ff, mm, fm, mf ,先列出所有可能的组合方式(1表示连在一次,具体判断方式自己看看就知道了)
// ff mm fm mf
//ff 1 0 1 0
//mm 0 1 0 1
//fm 0 1 0 1
//mf 1 0 1 0
//题目中说不能有fff和fmf,所以去掉他们,最终结果如下
// ff mm fm mf
//ff 0 0 1 0
//mm 0 1 0 1
//fm 0 1 0 0
//mf 1 0 1 0
#include<stdio.h>
#include<string.h>
int num=,mod;
struct matrix
{
int a[][];
}answ;
matrix multiply(matrix x,matrix y)//矩阵乘法
{
matrix temp;
memset(temp.a,,sizeof(temp.a));
for(int i=;i<num;i++)
{
for(int k=;k<num;k++)
{
for(int j=;j<num;j++)
{
temp.a[i][j]=(temp.a[i][j]+x.a[i][k]*y.a[k][j])%mod;
}
}
}
return temp;
}
matrix calc(matrix a,int n)//矩阵快速幂——a^n
{
if(n==)return a;
matrix e;
for(int i=;i<num;i++)
for(int j=;j<num;j++)
e.a[i][j]=(i==j); while(n)
{
if(n&)
e=multiply(e,a);
n>>=;
a=multiply(a,a);
}
return e;
}
int main()
{
int n,sum;
while(scanf("%d%d",&n,&mod)!=EOF)
{
sum=;
matrix origin= {,,,,
,,,,
,,,,
,,,};
answ=calc(origin,n-);//因为给的项目是后两位
for(int i=;i<;i++)
for(int j=;j<;j++)
sum=(sum+answ.a[i][j])%mod;
printf("%d\n",sum);
}
return ;
}
hdu 2604 Queuing(动态规划—>矩阵快速幂,更通用的模版)的更多相关文章
- hdu 2604 Queuing(矩阵快速幂乘法)
Problem Description Queues and Priority Queues are data structures which are known to most computer ...
- HDU 2604 Queuing(矩阵快速幂)
题目链接:Queuing 题意:有一支$2^L$长度的队伍,队伍中有female和male,求$2^L$长度的队伍中除 fmf 和 fff 的队列有多少. 题解:先推导递推式:$f[i]=f[i-1] ...
- hdu 2604 递推 矩阵快速幂
HDU 2604 Queuing (递推+矩阵快速幂) 这位作者讲的不错,可以看看他的 #include <cstdio> #include <iostream> #inclu ...
- HDU 2604 Queuing,矩阵高速幂
题目地址:HDU 2604 Queuing 题意: 略 分析: 易推出: f(n)=f(n-1)+f(n-3)+f(n-4) 构造一个矩阵: 然后直接上板子: /* f[i] = f[i-1] ...
- HDU 2604 Queuing(矩阵高速幂)
题目地址:HDU 2604 这题仅仅要推出公式来,构造矩阵就非常easy了.问题是推不出公式来..TAT.. 从递推的思路考虑.用f(n)表示n个人满足条件的结果.假设最后一个是m则前n-1人能够随意 ...
- hdu 2604 Queuing (矩阵高速幂)
Queuing Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- HDU.1575 Tr A ( 矩阵快速幂)
HDU.1575 Tr A ( 矩阵快速幂) 点我挑战题目 题意分析 直接求矩阵A^K的结果,然后计算正对角线,即左上到右下对角线的和,结果模9973后输出即可. 由于此题矩阵直接给出的,题目比较裸. ...
- hdu 3117 Fibonacci Numbers 矩阵快速幂+公式
斐波那契数列后四位可以用快速幂取模(模10000)算出.前四位要用公式推 HDU 3117 Fibonacci Numbers(矩阵快速幂+公式) f(n)=(((1+√5)/2)^n+((1-√5) ...
- HDU 2842 (递推+矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...
随机推荐
- java虚拟机理解探索1
以下内容源于个人对<深入java虚拟机>的理解总结 基本概念: java虚拟机可以指一种抽象规范,也可以指一种具体实现,亦可以指一个java虚拟机实例. 虚拟机生命周期: 一个java虚拟 ...
- python——类
类的定义格式: class CLASSNAME(父类1,父类2,父类3): __A = 0 ##私有属性,两个_开头,只有在该类中的函数才能访问 B = 0 ##公共属性 def 函数名(s ...
- Windows Phone 中查找可视化树中的某个类型的元素
private void StackPanel_Tap(object sender, TappedRoutedEventArgs e) { //获取到的对象是ListBoxItem ListBoxIt ...
- C++ 中的 const 详解
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4235721.html 1.为什么使用 const int 而不使用 #define 在使用# ...
- 杂项一之js,<select>标签
一.在aspx页面中实现 修改与删除页面的跳转 前台js部分: 在上部的js部分中写,根据传过来的id,来经行页面的跳转,并把id传过去 js部分就是实现了一个页面跳转的功能 (还有确认框confir ...
- MAC上 nodejs express 安装
最近在MAC上搭建 nodejs环境以及安装 express 框架,遇到了一些问题,不过最后总算还是安装成功了,下面是操作步骤 1.node js 安装 访问nodejs官网进入下载mac上的安装包 ...
- Global::pickSpecificTable_DNT
/*************************************************** Created Date: 13 Jul 2013 Created By: Jimmy Xie ...
- sql拆分查询
有这样一个需求: 临时表sql: create table #AA ( ID int, Name nvarchar(20) ) insert #AA select 1,'苏州/上海/温州' union ...
- AIR串口通信
最近公司的项目中需要用到串口通信,项目是用基于AIR的,AIR本身是不支持串口通信的,本想用 c#或java另写一个负责串口通信的模块,又感觉很烦不想那么弄,就想到了ANE.可惜以前也没弄过 ANE, ...
- 常用设备类别及其GUID
Class ClassGuid 说明 1394 6BDD1FC1-810F-11D0-BEC7-08002BE2092F 1394主控制器 CDROM 4D36E965-E325-11CE-BFC1- ...