hdu1560DNA sequence(bfs)

[kuangbin]专题二 搜索进阶 DNA sequence HDU - 1560【IDA*】 【题目描述】 The twenty-first century is a biology-technology developing century. We know that a gene is made of DNA. The nucleotide bases from which DNA is built are A(adenine), C(cytosine), G(guanine), an... 阅读详情

DNA sequence
Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4685 Accepted Submission(s): 2241

Problem Description
The twenty-first century is a biology-technology developing century. We know that a gene is made of DNA. The nucleotide bases from which DNA is built are A(adenine), C(cytosine), G(guanine), and T(thymine). Finding the longest common subsequence between DNA/Protein sequences is one of the basic problems in modern computational molecular biology. But this problem is a little different. Given several DNA sequences, you are asked to make a shortest sequence from them so that each of the given sequence is the subsequence of it.

For example, given “ACGT”,“ATGC”,“CGTT” and “CAGT”, you can make a sequence in the following way. It is the shortest but may be not the only one.

Input
The first line is the test case number t. Then t test cases follow. In each case, the first line is an integer n ( 1<=n<=8 ) represents number of the DNA sequences. The following k lines contain the k sequences, one per line. Assuming that the length of any sequence is between 1 and 5.

Output
For each test case, print a line containing the length of the shortest sequence that can be made from these sequences.

Sample Input
1
4
ACGT
ATGC
CGTT
CAGT

Sample Output
8

暴力

#include<bits/stdc++.h>
using namespace std;
char str[10][10];
bool vis[6][6][6][6][6][6][6][6];
int l[9],n;
char di[5]="AGCT";
struct node{
    int p[9];
    int d;
    node(){memset(p,0,sizeof p);d=0;}
};
bool* getvis(node &p){
    return &vis[p.p[1]][p.p[2]][p.p[3]][p.p[4]][p.p[5]][p.p[6]][p.p[7]][p.p[8]];
}
int check(node &p){
    for(int i=1;i<=8;i++)if(p.p[i]!=l[i])return 0;
    return 1;
}
int bfs(){
    memset(vis,0,sizeof vis);
    queue<node>mq;
    node st;st.d=0;
    for(int i=1;i<=n;i++)st.p[i]=0;
    bool *pst=getvis(st);
    *pst=true;
    mq.push(st);
    while(!mq.empty()){
        node nw=mq.front();
        mq.pop();
        if(check(nw))return nw.d;
        for(int i=0;i<4;i++){
            int f=0;
            node nxt=nw;
            for(int j=1;j<=n;j++){
                if(di[i]==str[j][nw.p[j]]){
                    nxt.p[j]++;
                    f=1;
                }
            }
            if(f){
                nxt.d++;
                bool *nxtp=getvis(nxt);
                if(*nxtp)continue;
                *nxtp=true;
                mq.push(nxt);
            }
        }
    }
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--){
        cin>>n;
        memset(l,0,sizeof l);
        memset(str,0,sizeof str);
        for(int i=1;i<=n;i++){
            cin>>str[i];
            l[i]=strlen(str[i]);
        }
        cout<<bfs()<<endl;
    }
    return 0;
}

Matlab安装Embedded Coder Support Package for Texas Instruments C2000 Processors教程 Matlab安装Embedded Coder Support Package for Texas Instruments C2000 Processors 阅读详情

相关推荐

分离与合体题解(区间DP)

题目: 经过在机房里数日的切磁,LYD从社神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试 杜神牛造了个区域,它们紧邻着排成了一行,编号1-n。在这經个区域里都放着一把OI界 的金钥匙,每一把都有一定的价值,LYD当然想得到它们了。然而杜神牛规定LYD不可以一下子 把它们全部拿走,而是每次只可以拿一把。为了尽快地拿到所有的金钥匙,LYD自然就用上了刚学的分离与合体特技。 开始LYD可以选择从1~n-11~n-11~n-1的任何一个区域(记为K)进入,进入后LYD会在K区域发 生分离,从而分离为两个小L

cqbz_lipengcheng的博客 369

github新手用法详解(建议收藏!!!)

如果你是一枚Coder,但是你不知道Github,那么我觉的你就不是一个菜鸟级别的Coder,因为你压根不是真正Coder,你只是一个Code搬运工。说明你根本不善于突破自己!为什么这么说原因很简单,很多优秀的代码以及各种框架源码都存放于github当中! 目录github登录与注册git安装步骤详解 首先,我先对GitHub来一个简单介绍,GitHub他就是一个远程仓库,远程仓库通俗的理解就是一个可以保存自己代码的地方,在实际开发当中一个项目往往是有多个人来共同协作开发完成的,那么就需要一个统一代码保存的

怪咖@的博客 26万+

AlphaFold3实战:用它预测抗体结构,我的CDR H3环RMSD降到了2Å以内

本文详细介绍了如何利用AlphaFold3(AF3)高精度预测抗体结构,特别是CDR H3环的建模,其RMSD可降至2Å以内。通过实战演示从序列输入到结构优化的全流程,包括参数配置、置信度指标解读及结果分析,帮助研究人员快速掌握AF3在抗体药物研发中的应用。

weixin_29224529的博客 187

github入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

如果你是一枚Coder,但是你不知道Github,那么我觉的你就不是一个菜鸟级别的Coder,因为你压根不是真正Coder,你只是一个Code搬运工。说明你根本不善于突破自己!为什么这么说原因很简单,很多优秀的代码以及各种框架源码都存放于github当中!

ZL_1618的博客 1万+

避开STM32H7的‘保护陷阱’:从Option Byte机制深度解析读写保护原理与预防

本文深度解析STM32H723VGT6的Option Byte保护机制,详细讲解RDP读保护和WRP写保护的工作原理及配置方法,并提供硬件设计防御策略和软件预防性编程技巧,帮助开发者避免误触发保护机制导致芯片锁定的问题。

weixin_33686714的博客 441

无人机基本组成部件

无人机基本组成部件

qq_37410522的博客 1万+

Git、GitHub新手使用教程——三分钟学会白嫖源码

Git是一个开源的分布式版本控制系统(简单理解:让你的代码在云端存档,可以看到你代码的历史版本,支持多人协作等),可以有效、高速地处理从很小到非常大的项目版本管理。而GitHub是基于这个版本控制系统打造的网站,同时,你也可以在上面找到许多开源的内容。Git三大概念:提交commit、仓库repository、分支branch1.提交commit:将代码的变化以commit为单位记录下来,当你代码写崩的时候就可以回档到之前的某一次commit,简单来说就像是游戏存档。

2301_76655007的博客 12万+

Jacobi正交多项式在数值分析中的应用与实现

本文深入探讨了Jacobi正交多项式在数值分析中的核心应用与实现。作为最通用的正交多项式族,Jacobi多项式通过参数α和β的调节,可退化为切比雪夫、勒让德等经典多项式,为函数逼近、奇异积分和微分方程求解提供了统一框架。文章重点解析了其在加权高斯积分(高斯-雅可比积分)和谱方法求解微分方程中的关键作用,并提供了基于递归关系和SciPy的稳定高效实现方案,帮助读者掌握这一强大的数值计算工具。

weixin_29306011的博客 244

【GitHub】保姆级使用教程

输入网址,无脑下载网易加速器;下载安装完毕后,创建账号进行登录登录后,在右上角搜索框中搜索“学术资源”,并点击;稍等一会儿就会跳转出来“学术资源”的一个页面;此时,我们就可以新打开一个标签页登录GitHub,自由快速访问啦!

m0_46459413的博客 9万+

【手把手教学】YOLOv13的Dilated Reparam Block (DRB) 实现细节与优化技巧

DRB(Dilated Reparam Block)是一种创新的卷积神经网络模块,通过多分支膨胀卷积和结构重参数化技术显著提升模型性能。训练阶段使用不同膨胀率和卷积核大小的并行分支增强特征提取能力,推理阶段则将这些分支融合为单一高效的大核卷积。该方法成功解决了大核卷积的计算复杂度和训练困难等问题,在保持推理效率的同时,使模型准确率提升8.56%,mAP暴涨12.33%。DRB的核心在于训练时复杂、推理时简单的设计哲学,以及膨胀卷积的多尺度特征提取能力,为CNN性能优化提供了新的思路。

FJN110的博客 554

LPDDR5 学习笔记07:读写操作详解

本文介绍了LPDDR5 SDRAM的读写操作时序规范。对于读操作,需在时钟上升沿发送读指令,经过RL延迟后输出首个有效数据,并需定期校准采样时钟以补偿时序偏移。写操作需先建立WCK2CK同步状态,WCK信号需提前驱动,并在写入数据后保持活动状态。连续读写操作中,若指令间隔超过特定阈值需重新同步。还介绍了RDQS模式,通过数据选通信号提高高速场景下的数据采集可靠性。所有操作都需满足严格的时序参数要求,包括前后导码、后缀周期等,以确保数据可靠传输。

一只豌豆象的博客 2723

HDU 1560 DNA sequence(BFS+hash)

题目链接:【HDU 1560】 输入n个字符串,找出最短的序列(从前往后,这n个字符串均能在这个序列中找到,不要求连续) 枚举第i个位置的可能性,一共四个字母“ACGT”,我一开始直接记录前i个字符,结果MLE了 用哈希优化,has用来记录枚举到第i个位置时,所有的字符串已经匹配掉后得到的哈希值,v[]用来记录目前已经有多少个字母已经匹配掉了 看题目中的数据,ACGT、ATGC、CGTT、

小小西北风 565

YOLOv8有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

大家好!欢迎阅读本专栏。本专栏涵盖了YOLO8中C2f、主干网络、检测头、注意力机制、Neck等多种结构的创新,同时也包括了 YOLO相关的基础知识以及相关项目。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 3万+

HDU1560 DNA sequence —— IDA*算法

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1560 DNA sequence Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2999    Accepted S

A man can be destroyed, but not defeated. 574

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

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hdu 1560 DNA sequence(迭代加深搜索)

题意:找到一个最短的序列,使得输入的所有序列都是这个序列的子序列。输出最短序列的长度 DNA sequence Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 687    Accepted Submission(

2105

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

hdu 1560 DNA sequence(搜索)

http://acm.hdu.edu.cn/showproblem.php?pid=1560 DNA sequence Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 732 Accepted Submission(...

diansitao5461的博客 122

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【搜索进阶】HDU 1560 DNA sequence

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1560 IDA*: 容易看出最少步数肯定是大于等于最大字符长度的,所以就构造 h() 为所有剩余长度的最大值

又见炊烟 467

HDU1560 DNA sequence

题目: The twenty-first century is a biology-technology developing century. We know that a gene is made of DNA. The nucleotide bases from which DNA is built are A(adenine), C(cytosine), G(guanine),...

weixin_30834783的博客 124

HDU 1560 DNA sequence(初学IDA*)

题面 The twenty-first century is a biology-technology developing century. We know that a gene is made of DNA. The nucleotide bases from which DNA is built are A(adenine), C(cytosine), G(guanine), and T...

Yi_Qing_Z的博客 210

DNA Sequence(IDA*,迭代深搜)

传送门HDU1560描述 The twenty-first century is a biology-technology developing century. We know that a gene is made of DNA. The nucleotide bases from which DNA is built are A...

qq_46179151的博客 212

HDU1560 DNA sequence(IDA*)题解

DNA sequenceTime Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3503    Accepted Submission(s): 1681Problem DescriptionThe twenty-first century is ...

努力,奋斗 335

HDU - 1560 DNA sequence 【迭代加深】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1560 关于迭代加深,可以参考这篇博客 https://blog.youkuaiyun.com/hzaukotete/article/details/81226556 迭代加深是在dfs的基础上,枚举深搜的深度 dep。 比如说 我一开始规定 dep == 1,当dfs深搜到深度为 1的时候就回溯,如果dep...

Y390d的博客 259

HDU 1560 DNA sequence (IDA* 迭代加深 搜索)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1560 BFS题解:http://www.cnblogs.com/crazyapple/p/3218107.html 构造一个串,使得它包含所有的给定DNA序列,并且要求长度最短。采用dfs策略,对于每个串定义1个指针,当全部指针为串尾时判断构造的长度,由于状态空间过大,但是又存在冗余搜索...

diansitao5461的博客 142

HDU 1560 DNA sequence hh大神代码

#include "stdio.h" #include "string" #define M 1679616+100000 struct H{ int st; int len; }q[M]; int hash[M],cas =1; int n , end ,len; char str[8][8]; char ku[] ="ACGT"; int bfs() { int head,tail,i,

vsooda的专栏 1464
上一篇: hdu3533Escape(bfs)
下一篇: hdu3085Nightmare Ⅱ(双向BFS)
IDrandom
博客等级 码龄12年 31粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值