POJ 3420 Quad Tiling DP?递推?+矩阵快速幂

Spring Boot 3.5.4 + LangChain4j实战:用Milvus搭建企业级RAG问答系统(附阿里百炼API配置) 本文详细介绍了如何利用Spring Boot 3.5.4、LangChain4j与Milvus构建企业级RAG问答系统。内容涵盖从架构设计、阿里百炼API安全配置、Milvus部署优化,到RAG检索、会话管理等核心实现,并提供了生产级API设计、监控集成及性能优化等实战经验,旨在帮助开发者打造高可用、可维护的Java AI应用。 阅读详情

原题链接


题目大意:
有多少种方法可以用2*1的骨牌填满4*n的棋盘


分析:
首先这道题不可能打表,其次它也不可能用STMD算法,它怎么看都像一道数学题,但是我们又不能直接计算,所以我们使用递推的方法
f[i][* * * * ]代表将要填第i行的四个格子时且第i行状态为 * * * * 的方案数,然后我们考虑一共有几种状态
0—满行1111
1—中间空1001
2—两边空0110
3—一侧空0011/1100
4—全空0000
怎么转移呢??
f[i][0]–>f[i+1][0]&f[i+1][4]&f[i+1]3&f[i+1][1]
f[i][1]–>f[i+1][0]&f[i+1][2]
f[i][2]–>f[i+1][1]
f[i][3]–>f[i+1][3]&f[i+1][0]
f[i][4]–>f[i+1][0]
注意,因为3包含两种情况,所以当前状态为空且要填满当前行使得下一行状态为一侧空的方案数要乘2
初值是什么呢??
f[0][0]=1,我们什么都没填,当前行肯定为空,且只有一种方案>_<
那么目标是啥捏??
f[n+1][0]也就是第n+1行为空时(为什么不是第n行为满时呢??因为还有可能是第n行为中间空或一侧空时,考虑起来太麻烦,所以直接考虑填完n行的状态,多么得小清新………)
然后我们就开心地想要去写递推了………..
然后我们就忧伤地发现1 ≤ N ≤ 10^9,……………..QAQ
所以还是考虑考虑矩阵快速幂吧…………..
建一个5*5的矩阵
1 1 0 2 1
1 0 1 0 0
0 1 0 0 0
1 0 0 1 0
1 0 0 0 0
然后转移就好啦…………>_<


代码如下:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#define int long long
using namespace std;
int n,MOD;
struct Matrix{
    int a[5][5];
    Matrix(){
        memset(a,0,sizeof(a));
    }
    friend Matrix operator *(Matrix a,Matrix b){
        Matrix ans;
        for(int i=0;i<=4;i++)
            for(int j=0;j<=4;j++)
                for(int k=0;k<=4;k++)
                    ans.a[i][j]=(ans.a[i][j]+a.a[i][k]*b.a[k][j]%MOD)%MOD;
        return ans;
    }
}ONE,S,X;
inline int read(){
    char ch=getchar();
    int f=1,x=0;
    while(!(ch>='0'&&ch<='9')){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
        x=x*10+ch-'0',ch=getchar();
    return f*x;
}
Matrix power(Matrix a,int b){
    Matrix ans=ONE; 
    while(b){
        if(b&1)
            ans=ans*a;
        a=a*a,b>>=1;
    }
    return ans;
}
signed main(void){
    /*0---满行1111,1---中间空1001,2---两边空0110,3---一侧空0011/1100,4---全空0000 
    f[i][0]-->f[i+1][0]&f[i+1][4]&f[i+1][3](*2)&f[i+1][1] 
    f[i][1]-->f[i+1][0]&f[i+1][2]
    f[i][2]-->f[i+1][1]
    f[i][3]-->f[i+1][3]&f[i+1][0]
    f[i][4]-->f[i+1][0]*/
    S.a[0][0]=S.a[0][1]=1,S.a[0][4]=S.a[1][0]=1,S.a[0][3]=2,S.a[1][2]=S.a[2][1]=S.a[3][0]=1,S.a[3][3]=S.a[4][0]=1;  
    X.a[0][0]=1;
    while(n=read(),MOD=read()){
        for(int i=0;i<=4;i++)
            ONE.a[i][i]=1;
        Matrix ans=X*power(S,n);
        cout<<ans.a[0][0]<<endl;
    }
    return 0;
} 

by >o< neighthorn

高通平台N4单路输入的720P相机预览 N4的一路720P Camera作为MIPI摄像头使用 阅读详情

相关推荐

ByteTrack参数调优全攻略:从原理到实战(含YOLOv8示例)

本文深入解析了ByteTrack多目标跟踪算法的核心原理与参数调优策略。通过拆解其独特的两阶段关联机制,并结合YOLOv8检测器,提供了针对不同应用场景(如拥挤行人、高速车辆)的精细化参数调整指南与实战示例,旨在帮助开发者解决ID切换、目标丢失等工程落地难题,提升跟踪系统的鲁棒性与实用性。

cheese的博客 322

poj3420

描述: 首先,这道题是poj2663的升级版https://blog.youkuaiyun.com/q_t_pang/article/details/81077519 在一个4*n的棋盘上,用1*2的多米诺骨牌来平铺,问铺满的方法有多少种。 同样的,我们将棋盘分为左右两部分,右边部分是不可分割的。 1、当右边部分是4*1时,不可分割的只有一种铺满方法 2、当右边部分是4*2时,不可分割的有四种平...

会飞的潜艇 712

(学习笔记)机器人自主导航从零开始第四步———Rviz、Gazebo、Meshlab的安装

一、Rviz的安装 Rviz是一个

qq_59475883的博客 5057

POJ2663,3420题解

两道非常像的题,放到一起来写 题目大意:用若干2x1的砖去铺一个3xN的空间(POJ3420为4xN),问总共有多少种不同的铺法。 思路:找规律。对于3xN的空间,显然N

Prgl的博客 375

TI 实时操作系统SYS/BIOS使用总结

1:概述: SYS/BIOS 是一个可扩展的实时的操作系统。具有非常快速的响应时间(在中断和任务切换时达到较短的延迟),响应时间的确定性,强壮的抢占系统,优化的内存分配和堆栈管理(尽量少的消耗和碎片)。能够实现系统的模块化并可裁剪。 最大的特点就是:实时。 2:XDCtools: XDCtools 是SYS/BIOS引用的一种实时的软件组件技术(RTSC),它包括一些有用的工具,标准的AP

带头奋青的博客 5万+

树莓派教程(基于python编程)--入门篇

一:格式化SD卡 SD卡插入读卡器连接电脑,使用SDFormatter对SD卡进行格式化 (重装烧录也要进行着SD卡格式化操作) 二:下载官方镜像 http://downloads.raspberrypi.org/raspbian_latest 三:烧录SD卡 使用Win32DiskImager将镜像烧录到格式化后的SD卡 SD卡盘根目录(/boot)下新建一个命名为ssh的...

qq_42109746的博客 6万+

POJ 3420

状态压缩加矩阵。 z

The Summer, The Winter 928

COMSOL新手必看:锂电池仿真从入门到精通的5个实战案例(附模型文件)

本文为COMSOL新手提供锂电池仿真的5个实战案例,涵盖锂枝晶生长模拟、电池热失控预警、SOC估计等效电路模型、电池组液冷系统热管理及SOH衰退模型构建。通过详细步骤和参数设置,帮助用户快速掌握锂电池仿真技术,提升新能源研发效率。附模型文件可直接应用。

wdx01234567的博客 260

poj 3420 Quad Tiling(状态压缩矩阵递推)

poj 3420 Quad Tiling

yjCola 810

Arduino ESP8266通过 RF433数据收发实验

Arduino ESP8266通过 RF433射频模块实现数据收发实验 写这篇文章,折腾了2天,在没有成功之前,一直在摸索和采坑当中,不要问我黑暗和黎明之间有多长。开发很多时候只问结果,不问过程的,在这里分享来之不易的结果,希望后面的人不要采坑,有成功的案例先河,后面与之相关的应用开发只需要套用模板修改即可实现。 实物搭建 RF433模块 我使用的是这个:nodemcu 本案例开发所使用到的库:RadioHead:http://www.airspayce.com/mikem/

perseverance51博客 3806

MEMS传感器技术深度解析:从原理到未来趋势的全面指南(智能驾驶赛道有戏)

在智能汽车每秒产生1GB数据的今天,在可穿戴设备厚度突破1毫米的极限挑战下,MEMS(微机电系统)传感器正以的三大核心优势,重塑着人类感知世界的方式。作为从业10年的MEMS工程师,我见证了这个领域从实验室走向量产的完整历程——从2005年汽车安全气囊中笨重的压阻式加速度计,到2025年智能手机中集成5种传感器的SoC芯片,MEMS技术正在书写传感器行业的摩尔定律新篇章。本文将带您穿透技术迷雾,深入解析MEMS传感器的技术密码,涵盖,并附独家整理的与。文末更提供,助您把握万亿级市场机遇。

优快云-新能源汽车研发测试专业博主 2297

Quad Tiling POJ - 3420 (矩阵快速幂)题解

Quad Tiling POJ - 3420 (矩阵快速幂)题解

Sega_hsj 's Blog 448

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

POJ 3420 Quad Tiling 线性递推 矩阵快速幂

题意:给出一个4 * N的方格。用1 * 2的格子去填充,问有方案数。 思路:以前做过填充格子的轮廓线DP。但是因为N           但是注意到所有格子都是可以放1*2的格子的,而不是像其他的题有某些障碍,是没有办法放置。           类比轮廓线DP的思路,我们可以以一行为转移单位。枚举前一行的所有可能的情况,对于每种情况,将没有填满的空填满。这样就转移到了下一行,继续进行上面

leodestiny 1111

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

POj 3420 Quad Tiling 状态压缩DP+递推+矩阵快速幂

哈哈,写了好久的,总算对了。 先介绍一种   递推+矩阵的快速幂的方法   一种DP的思想考虑4×n的最后一列  ,可以放的方法一共有5种    1.放4个 1×2  则 为dp[n-2]   2.   放2个 2x1  则为 dp[n-1]   3.   放 1x2    2x1  1x2  则为  dp[n-2]+dp[n-4]+.....+dp[0]  4.  放 1x2

cnh294141800的专栏 1590

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

POJ 3420 Quad Tiling 状压DP+矩阵快速幂

链接:http://poj.org/problem?id=3420 题意:给一个4*N(1 ≤ N ≤ 1e9)的矩形空间,并且给不限块数的1*2的多米诺骨牌,问是由多少种方式能把这个矩形空间填满。 思路:看到这种问题果断想到状压,虽然是在看矩阵的时候看到的这道题。dp[i][j]表示在第i行状态为j的情况下的填满方式数,j的二进制表示中0表示对应位置上一行的骨牌是竖放,或者对应位置的骨牌是横

看曙光 1412

【POJ 3420】Quad Tiling(dp|递推 +矩阵快速幂)

秋意渐浓,阳光西斜,遍地金黄

reverie_mjp的博客 458

POJ 3420 Quad Tiling 状压DP+递推+矩阵快速幂

Quad Tiling 题解:首先根据题目数据量来看,肯定是必须有递推公式的了或者滚动数组什么的。 因此我们考虑递推情况,对于4⋅n4\cdot n4⋅n,最后一列的放置情况。 如果是444个[1⋅2][1\cdot 2][1⋅2]排列,那么dp[n]=dp[n−2]dp[n] = dp[n - 2]dp[n]=dp[n−2]。 如果是222个[2⋅1][2\cdot 1][2⋅1]排列,那么d...

Eternally831143的博客 300

POJ3420 Quad Tiling

POJ 3420 Quad Tiling

modricwang的博客 427

POJ 3420 矩阵的幂

题目链接:POJ-3420题意:用1×2的矩形填充4×n的的矩形,求方案数。思路:大家可以轻易地在网上找到状态压缩的解法,这里我给出一个递推+矩阵的幂的方法。 - a[n] = a[n-1]+b[n-1]+c[n-1]+dx[n-1]+dy[n-1] - b[n] = a[n-1] - c[n] = a[n-1]+e[n-1] - dx[n] = a[n-1]+dy

cyclization的小栈 401

POJ 3420 (矩阵二分幂优化,状压DP)

由于n 以上式子是线性的关系,显然可以构造矩阵。 #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAXN 16 #define LL __int64 const int INF=0x3f

swust_lian的博客 403

【poj3420】递推式转矩阵乘法

【poj3420】递推式转矩阵乘法 历史性的时刻!!! 推了一晚上!和hyc一起萌萌哒地推出来了!! 被摧残蹂躏的智商啊!!! 然而炒鸡高兴!! (请不要介意蒟蒻的内心独白。。) 设a[i]为扫到第i行时的方案数。 易知,对于一行1*4的格子,只有一种方案把它铺满。 首先,对于当前的第i行,如果它不和第i-1行有联系(也就是它是...

qq_25768269的博客 1223

poj2411 2663 2420 dp+状态压缩(多米诺骨牌问题)

题目描述:用1*2 的矩形通过组合拼成大矩形,求拼成指定的大矩形有几种拼法。 首先 我们先求用1*2 的矩形拼成 n*m的矩形有多少种拼法 当n*m为奇数时,一定是不会拼出来的,因为想要拼出来就需要整数倍的小矩形数目。 为了加速算法,要把m,n中小的那个当做列 分两个步骤:1) 先求出相邻两行的转化关系              2) 通过相邻两行的转化关系算出经过n次转化有几种方法能拼

我只想做一个努力的人 1万+

POJ3420 Quad Tiling【矩阵快速幂】

Quad Tiling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5008 Accepted: 2269 Description Tired of the Tri Tiling game finally, Michael turns to a more challengeable game, Quad Tiling: ...

海岛Blog 631

POJ 2411 + POJ 2663 + POJ 3420 小方格填充之多米诺骨牌系列(状压DP)

原文链接:http://blog.youkuaiyun.com/shiwei408/article/details/8821853解决此类问题,一般都是用1*2的小方块填充 n*m的矩阵。其中n或m两者中至少有一个较小。 解决此类的方法,当n和m都很小的时候,可以直接for循环枚举状态来更新求值。但是当二者间有一个稍大的时候,就需要构造矩阵来解决此类问题。通常将较小的那个数作为列用dfs来枚举两行之间的状态。

我要加油了,因为我还有很多NB的梦想! 1319
上一篇: POJ2337 Catenyms
下一篇: POJ 3461 Oulipo KMP模板题
NeighThorn
博客等级 码龄11年 20粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值