博客
关于我
bzoj 1966: [Ahoi2005]VIRUS 病毒检测
阅读量:267 次
发布时间:2019-03-01

本文共 580 字,大约阅读时间需要 1 分钟。

Samuel星球上的探险依然在继续。在星球的南极附近,探险机器人发现了一个巨大的冰湖,并将许多RNA片段运回实验基地。科学家们在研究这些RNA片段时,发现其中含有许多未知的病毒。每个RNA片段都由A、C、T、G四种核苷酸组成,而病毒模板片段则包含通配符*和问号。具体来说,*可以匹配0个或多个任意字符,而?可以匹配任意一个字母。RNA片段如果能与病毒模板片段相匹配,则被视为未知病毒。

例如,假设病毒模板片段为A*G?C。RNA片段AGTC和AGTGTC都能与之匹配,因此被认定为未知病毒。而RNA片段AGTGC则不符合条件。科学家们希望能够筛选出不属于病毒的RNA片段,以便进行进一步的研究。

在分析RNA片段与病毒模板片段的匹配关系时,科学家们采用了动态规划的方法。具体来说,定义f[i][j]为前i位RNA片段与前j位病毒模板片段的匹配情况。通过分析可知,f[i][j]的状态转移方程为:

f[i][j] = max(f[i-1][j-1] + (s_i == t_j),f[i][j-1],f[i-1][j] + (s_i != t_j))

其中,s_i表示RNA片段的第i位,t_j表示病毒模板片段的第j位。

这种方法的时间复杂度为O(n^3),其中n为RNA片段的长度。通过动态规划,科学家们能够高效地判断RNA片段是否为病毒,并筛选出非病毒片段。

转载地址:http://vnza.baihongyu.com/

你可能感兴趣的文章
Openlayers实战:modifystart、modifyend互动示例
查看>>
Openlayers实战:判断共享单车是否在电子围栏内
查看>>
Openlayers实战:加载Bing地图
查看>>
Openlayers实战:绘制图形,导出geojson文件
查看>>
Openlayers实战:绘制图形,导出KML文件
查看>>
Openlayers实战:绘制多边形,导出CSV文件
查看>>
Openlayers实战:绘制带箭头的线
查看>>
Openlayers实战:输入WKT数据,输出GML、Polyline、GeoJSON格式数据
查看>>
Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
查看>>
Openlayers高级交互(11/20):显示带箭头的线段轨迹,箭头居中
查看>>
Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
查看>>
Openlayers高级交互(15/20):显示海量多边形,10ms加载完成
查看>>
Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
查看>>
Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
查看>>
Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
查看>>
Openlayers高级交互(2/20):清除所有图层的有效方法
查看>>
Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
查看>>
Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
查看>>
Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
查看>>
Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
查看>>