(学军集训)DNA序列

题意

2018年10月,MIT建立了最新的纳米科技研究中心MIT.nano。此后,不断有新的研究成果在此产生。
有一天,研究者发现了一种新的生物,这种生物的基因中含有条DNA序列,每一条都有一定的长度,
科学家们可以将每条DNA序列切断,从而取出它的一个非空前缀。此后,他们可以将这些前缀按任意
顺序连结起来形成一条完整的DNA序列,这样的DNA序列对治疗癌症有很大的作用。
每条DNA序列都仅包含大写字母“A”,“C”,“G”,“T”。
科学家们很快发现,DNA序列的字典序越小,则治疗癌症的效果越好,他们想知道给定条DNA序列,
他们能获得的字典序最小的DNA序列是什么。
数据范围: n , m ≤ 50 n,m \le 50 n,m50

题解

直观的想法是按首字母分组,对于每组先选完首字母再选一个串的后面,但这样显然不对,因为后面可能比首字母更优。
于是考虑能否使得后面一定更劣:求出每个串a的最短前缀b,使得该前缀循环后小于原串,这样先选该前缀就一定更优。
又注意到如果知道顺序,那么直接从后往前贪心取即可,考虑将这些串排序:先按照b升序排,对于b相同的,要选出其中一个的a-b的前缀,使其字典序最小,于是按照b降序,若长度相同则长的放后,这样就留全了之后选择的机会。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值