poj 2440 DNA(状态压缩递推+矩阵)

poj DNA排序 简单的字符串操作和求逆序对数,是程设poj习题 立即下载


poj 2440 DNA


n<=2答案为n^2

n>2

考虑每个状态的后两位,共四种状态:00 01 10 11

每增加一位即是在以上三种状态的末尾添加0或1并且不能出现101和111的非法状态,则:

(始终只考虑最后两位)

00能推出00,01

01能推出10,11

10能推出00(添加1推出01非法)

11能推出10(添加1推出11非法)

则令初始矩阵为[1;1;1;1](对应四种初始状态的个数)

递推矩阵为:

1 1 0 0

0 0 1 1

1 0 0 0

0 0 1 0


#include<stdio.h>
#include<string.h>
#define MOD 2005
struct matrix
{
    int m[4][4];
};
matrix multi(const matrix &a,const matrix &b)
{
    matrix ans;
    memset(&ans,0,sizeof(ans));
    for(int i=0;i<4;i++)
        for(int k=0;k<4;k++)
            if(a.m[i][k])
            {
                for(int j=0;j<4;j++)
                {
                    ans.m[i][j]+=a.m[i][k]*b.m[k][j];
                    ans.m[i][j]%=MOD;
                }
            }
    return ans;
}
matrix pow(matrix a,int k)
{
    matrix ans;
    memset(&ans,0,sizeof(ans));
    for(int i=0;i<4;i++) ans.m[i][i]=1;
    while(k)
    {
        if(k&1) ans=multi(ans,a);
        a=multi(a,a);
        k>>=1;
    }
    return ans;
}
int main()
{
    matrix a;
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        if(n<=2) printf("%d\n",1<<n);
        else
        {
            memset(&a,0,sizeof(a));
            a.m[0][0]=a.m[0][1]=1;
            a.m[1][2]=a.m[1][3]=1;
            a.m[2][0]=1;
            a.m[3][2]=1;
            a=pow(a,n-2);
            int ans=0;
            for(int i=0;i<4;i++)
                for(int j=0;j<4;j++)
                {
                    ans+=a.m[i][j];
                    ans%=MOD;
                }
            printf("%d\n",ans);
        }
    }
    return 0;
}


Ceres Solver:从入门到使用 Ceres Solver是谷歌开源的C++非线性优化库,能够解决有约束或无约束条件下的非线性最小二乘问题。2010年之后大量的运用在谷歌的产品开发中,尤其在谷歌开源的cartographer中被大量的使用。 ceres可以在Linux,Windows,macOS,Andrioid,IOS系统进行安装使用,详情可查看下方的官网链接。 Ceres Solver 官网:http://ceres-solver.org/ 阅读详情

相关推荐

手把手教你用Logisim搞定华科计组实验:单总线CPU硬布线控制器设计(含Excel自动生成电路技巧)

本文详细解析了如何使用Logisim完成华科计组实验中的单总线CPU硬布线控制器设计,特别分享了利用Excel自动生成电路逻辑的高效技巧。从实验准备、状态机表格填写到模块化构建和系统联调,提供全流程实战指导,帮助读者快速掌握计算机组成原理核心概念,大幅提升实验效率。

weixin_28744423的博客 321

NOI 2.6 动态规划 9270:Pku2440 DNA

题目来源:http://noi.openjudge.cn/ch0206/9270/9270:Pku2440 DNA总时间限制: 4000ms  单个测试点时间限制: 1000ms  内存限制: 131072kB描述A kind of virus has attacked the Xplanet, and many lives are infected. After weeks of study, ...

da_kao_la的博客 631

OpenHarmony自定义Launcher

OpenHarmony源码版本:4.0release开发板:DAYU / rk3568DevEco Studio版本:4.0.0.600切换分支为OpenHarmony-4.0-Release,并下载源码。

Abner_Crazy的博客 1630

每天一道英文题,ICPC不自闭(6)

NOI openjudge 9270:Pku2440 DNA 题目翻译 一种病毒袭击了X星球,许多生命受到感染。经过数周的研究,X星球的CHO(生物健康组织)最终发现这种病毒有两种非常简单的DNA,可以用 101 和 111 来表示。不幸的是,地球上的生命也有由 0 和 1 组成的DNA。如果生物的DNA含有病毒的DNA,它就会受到影响;否则就不会。给定一个整数L,很明显会有 2^L 个不同的生命,其中DNA的长度是 L。你的工作是找出在 2^L 的生命中有多少不会受到影响? 输入 输入包含几个测试

haobowen的博客 658

手把手教你用Synopsys AHB VIP搭建验证环境:从SINGLE到WRAP16的完整波形分析与避坑指南

本文详细介绍了如何使用Synopsys AHB VIP搭建验证环境,从基础配置到复杂波形调试实战。重点解析了AHB协议中各种Burst类型的地址计算机制,包括INCR和WRAP类型,并提供了实际案例和避坑指南,帮助工程师快速掌握验证技巧。

weixin_42552716的博客 414

电池管理系统(BMS)系列—状态估计之SOH

BMS系列文章,介绍了SOH估计

zxx52113140的博客 1846

[POJ2440]DNA(dp)

Every bad situation has something positive. Even a dead clock shows the right time twice a day. 再糟糕的境遇也有生机,因为即使是坏掉的钟,每天也有两个时间是准的。

zyf2000 866

基于N32G003的PMBus从机协议栈设计与STM32F103模拟I2C主机通信实战

本文详细介绍了基于N32G003微控制器设计PMBus从机协议栈,并与STM32F103模拟I2C主机进行通信的实战方案。重点阐述了中断驱动架构、命令解析、CRC8优化及超时恢复机制,实现了在70kHz速率下稳定可靠的工业电源管理通信,适用于服务器电源、通信基站等成本敏感应用场景。

numpy6sculptor的博客 919

poj 2440 (找递推公式)

http://poj.org/problem?id=2440 DNA Time Limit:1000MS Memory Limit:65536K Total Submissions:3254 Accepted:1285 Description A kind of virus has attacked the X p...

diansitao5461的博客 187

在 SAP SD 模块里,销售订单号既可以由系统“自动”产生,也可以由用户“手工”输入,核心取决于“号码段(Number Range)”与“订单类型(Sales Document Type)”这两处配

SAP销售订单编号配置指南:系统提供内部自动编号和外部手工编号两种方式,通过VN01定义号码段(内部/外部),VOV8分配给订单类型并设置"ExtNo.Rq"选项即可切换。高阶应用支持灵活编号(如加前缀)或通过增强出口完全自定义编号规则。配置时需注意号码段创建、分配及传输问题,常见故障包括号码范围不存在或配置错误。核心是"号码段+订单类型"的组合控制编号生成方式,满足从简单到复杂的业务需求。

金牌架构师 531

BEV和OCC学习-4:数据准备生成pkl文件(NuSences)

info[‘cam_instances’][‘CAM_XXX’][i][‘bbox_3d’]:长度为 7 的列表,以 (x, y, z, l, h, w, yaw) 的顺序表示实例的 3D 边界框。info[‘cam_instances’][‘CAM_XXX’][i][‘bbox’]:2D 边界框标注(3D 框投影的矩形框),顺序为 [x1, y1, x2, y2] 的列表。info[‘cam_instances’][‘CAM_XXX’][i][‘attr_label’]:实例的属性标签。

zfjBIT的专栏 1699

poj2440(矩阵快速幂)

点击打开题目链接 大意:L位由0和1组成的基因,基因中不能包含子串101以及111,求这样的基因数(L 思路:10^8,果断快速幂。然后不包含101及111,不妨用f[i,k]表示满足条件,共含i位,且末三位为k的基因数 然后按k分情况进行递推。例如:f[i,000]=f[i-1,100]+f[i-1,000],f[i,010]=f[i-1,001](不能是101)等等 然

lixiaomu2的博客 347

【FPGA教程案例59】深度学习案例6——基于FPGA的CNN卷积神经网络之整体实现

在课程,我们对的基本原理有了初步认识。在上一个课程,我们完成了CNN的Relu激活层、pool池化层、卷积层以及图像输入层的实现,如下图所示:在本课程中,我们将上述四个模块结合起来,构建一个简单的CNN卷积神经网络。...

FPGA/MATLAB学习教程/源码/项目合作开发 2637

POJ-2440-矩阵

const int inf = 0x3f3f3f3f; const int maxn = 1009; const int mod = 2005; const double esp = 1e-6; int x[5][5]={ {1, 1, 0, 0, 0}, {0, 0, 1, 1, 0}, {0, 0, 0, 1, 1},

walk_up的专栏 597

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

poj2440

矩阵乘法 View Code #define w 2005struct Matrix{ int x, y; int num[5][5]; Matrix(int xx, int yy) { x = xx; y = yy; for (int i = 0; i &lt; x; i++) for (int j...

weixin_33726943的博客 118

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【OpenJudge9270】【Pku2440】【递推】DNA

DNA 【描述】 A kind of virus has attacked the X planet, and many lives are infected. After weeks of study, The CHO (Creature Healthy Organization) of X planet finally finds out that this kind of vi...

XIAO01067922的博客 338

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

POJ 2440 DNA(递推)

题目地址:http://poj.org/problem?id=2440 思路:先暴力打数据,再递推,循环节为200 AC代码: #include #include #include #include #include #include #include #include #include #include #include const int inf = 0x3f3f3

Java识堂,一个有干货的微信公众号 542

poj 2440 DNA 递推在模下存在循环节

题意和分析:        题意都是废话,用动态规划列个方程化下简,最后也是这题有意思的地方是求a(n)=a(n-1)+a(n-3)+a(n-3) 在模2005下的值。        你可能会说,这个简单啊,弄个数组,搞个for循环就行啊,没错,但这是O(n)。能快点么?        嗯,那用矩阵相乘表示递推,在乘法矩阵结合律的保证下幂运算加速足够快了吧?嗯,是快不少,但这是O(logn)

sepNINE的专栏 635

pku 2440 DNA

2440 DNA 递推题;通常有几种方式来做这种题:1.小范围内找到规律2.直接分析出规律进一步,有的题可能还要转化成矩阵乘法,然后分治的在nlgn时间内解决。有的由于数值太大,会要求取模,这时很可能会出现循环节。http://acm.pku.edu.cn/JudgeOnline/problem?id=2229也是一道递推的题目,我的想法是与二进制有关,奇数直接去掉末位1(-1),

uu 973

OpenJudge超详细题解,动画图文题解

内容来源于微信公众号:大神编程。已经过原文作者授权。 更新时间:2020-7-5 因为OpenJudge题库和一本通题库很多题都是一样,所以很多链接都是直接使用一本通的题解,完全不影响。 为什么要转载: 动画、图文结合。 我看了部分文章,一些我觉得很简单的题,但从中学到了以前没有学过的知识点和细节,重点是从中学习别人思维方式。 让更多的同学能学到更多的知识。 官方的QQ群:893157498 这是我建的QQ群:795233394 欢迎各位志同道合的同学们^_^ 已更新的题目颜色是蓝色,点击相

3万+

POJ 2440 DNA

本题地址:>here<DescriptionA kind of virus has attacked the X planet, and many lives are infected. After weeks of study, The CHO (Creature Healthy Organization) of X planet finally finds out that this kind

cytaz 382

pku 2778 DNA Sequence AC自动机 + 矩阵

http://poj.org/problem?id=2778 题意: 给定n个病毒DNA串,求一个长度为m的DNA片段不包含任何一个病毒串的的可能数? 思路:首先根据n个DNA串构造AC自动机,然后根据AC自动机构造矩阵,然后转化到Matrix大神的是个利用举证解决的问题的例八中去。 才开始我一直以为推出的举证和斐波那契数列的意思一样,转了个死弯,这里是把AC自动机这个图转化为邻接矩阵,然...

weixin_33979203的博客 170

POJ 1795 DNA Laboratory 已被翻译

<span title="Description ">描述 <span title="Background ">背景 刚刚开始建立自己的DNA实验室,邪恶的医生弗兰肯斯坦不是最新的。他想提取他的DNA,增强它有点和克隆自己。他已经弄清了如何从一些血细胞中提取DNA,但遗憾的是,读取DNA序列意味着将DNA分解成多个短片并首先分析它们。<span title="Frankenstein h

woniupengpeng的专栏 463

POJ9273:PKU2506Tiling_递推+高精度

总时间限制: 2000ms 单个测试点时间限制: 1000ms 内存限制: 131072kB 描述 对于一个2行N列的走道。现在用12,22的砖去铺满。问有多少种不同的方式。 下图是一个2行17列的走道的某种铺法。 输入 整个测试有多组数据,请做到文件底结束。每行给出一个数字N,0 <= n <= 250 输出 如题 样例 样例输入 2 8 12 100 200 样例输出 3 171 2731 845100400152152934331135470251 107129202950599351

qq_45713671的博客 602

POJ 3691 DNA repair

题目大意: 给你N个致病基因(长度各不超过20), 再给你一个DNA一条链的碱基序列(长度M不超过1000), 要求尽量少的修改碱基, 使得序列不含致病基因, 不能的话输出-1. 简要分析: 有赤裸裸的多模式串匹配, 当然要建立AC自动机了. 把一些状态标成致病态(当然把fail指针的信心合并过来). 设f[i][s]表示到DNA的第i个碱基, 在自动机上走到s状态, 至少的修改次数....

weixin_30855099的博客 153

北大POJ百练 4126 DNA

4126:DNA 内存限制:  1024kB 描述 考虑一段DNA单链,上面有N个基因片段。这里的基因片段可重叠(例如AGCTC包含AGC和CTC),不可倒置(例如AGCTC不包含TCG)。要问这样的单链最短长度是多少。 输入 输入的第一行是一个正整数T(不超过13),表示数据组数。每组数据若干行,其中第一行一个正整数N(不超过9),表示基因片段的数目,接下来N行每行一个基因片段,由A...

qq_39004117的博客 1774
上一篇: poj 3420 Quad Tiling(状态压缩矩阵递推)
下一篇: hdu 2604 Queuing(状态压缩递推,矩阵)
yjCola
博客等级 码龄14年 4粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值