4606: [Apio2008]DNA
4606: [Apio2008]DNA
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 63 Solved: 36
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
ACANNCNNG
Sample Output
HINT
Source
题意:
给定一个长度为m的由ACGTN组成的字符串,定义大小关系A<C<G<T,你要把其中的N替换成ACGT的其中一个,满足最多有k个不下降的子序列的同时,求出第R大的字符串。
M⩽50000 R⩽1012 K⩽10
题解:
明显的计数类DP
用f[i][j][k]表示第i到n位第i位是j,这部分分了k段的个数.
这个容易转移,然后我们就一步步走呗。
f[i][j][k]=∑(f[i+1,l,k或k-1]){k或k-1视j与l的关系而定,如果j>l则为k-1,否则为k}。
复杂度 O(16MK)
#include<cstdio>
using namespace std;
typedef long long ll;
const int N=5e4+;
int n,m,a[N];ll now;
ll f[N][][];
ll s[N][][];
char str[N],path[]={,'A','C','G','T'};
int main(){
scanf("%d%d%lld",&n,&m,&now);//M K R
scanf("%s",str+);
for(int i=;i<=n;i++){
if(str[i]!='N'){
a[i]=str[i]=='A'?:
str[i]=='C'?:
str[i]=='G'?:;
}
}
if(a[n]) f[n][a[n]][]=;
else for(int i=;i<=;i++) f[n][i][]=;
for(int i=n-;i;i--){
for(int j=;j<=;j++){
if(!a[i]||a[i]==j){
for(int k=;k<=m;k++){
for(int l=;l<=;l++){
f[i][j][k]+=f[i+][l][k-(l<j)];
}
}
}
}
}
for(int i=;i<=n;i++){
for(int j=;j<=;j++){
for(int k=;k<=m;k++){
s[i][j][k]=s[i][j][k-]+f[i][j][k];
}
}
}
for(int i=,j,k=;i<=n;i++){
if(a[i]){
putchar(path[a[i]]);
if(k>a[i]) m--;
k=a[i];
}
else{
for(j=;j<=&&s[i][j][m-(k>j)]<now;j++) now-=s[i][j][m-(k>j)];
putchar(path[j]);
if(k>j) m--;
k=j;
}
}
return ;
}
4606: [Apio2008]DNA的更多相关文章
- bzoj 4606: [Apio2008]DNA【dp】
写题五分钟读题两小时系列-- 看懂题的话不算难,然而我去看了大佬的blog才看懂题-- 题目大意是:一个原字符串,其中有一种通配符,合法串的定义是这个串(不含通配符))可以匹配原串并且这个串最多分成k ...
- 【BZOJ4606】[Apio2008]DNA DP
[BZOJ4606][Apio2008]DNA Description 分析如DNA序列这样的生命科学数据是计算机的一个有趣应用.从生物学的角度上说,DNA 是一种由腺嘌呤.胞嘧啶.鸟嘌呤和胸腺嘧啶这 ...
- [APIO2008]DNA 题解
题目链接 首先呢,看到 A C G T 对应不同的权值,第一步就是把字母转换成数字. 我们分别对 A->1 C->2 G->3 T->4 进行标号,之后方便 \(\text{d ...
- [APIO2008]DNA
https://zybuluo.com/ysner/note/1158123 题面 戳我 解析 我们要求出第\(r\)种方案,莫过于看其前面什么时候有\(r-1\)种方案. 于是,我们要求出每种情况的 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- [LeetCode] Repeated DNA Sequences 求重复的DNA序列
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...
- DNA解链统计物理
来源:Kerson Huang, Lectures on Statistical Physics and Protein Folding, pp 24-25 把双链DNA解开就像拉拉链.设DNA有\( ...
- AC自动机+DP HDOJ 2457 DNA repair(DNA修复)
题目链接 题意: 给n串有疾病的DNA序列,现有一串DNA序列,问最少修改几个DNA,能使新的DNA序列不含有疾病的DNA序列. 思路: 构建AC自动机,设定end结点,dp[i][j]表示长度i的前 ...
- [Leetcode] Repeated DNA Sequences
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...
随机推荐
- 仿网易nec首页动画效果
仿网页nec首页动画效果nec链接:http://nec.netease.com/ 首先,介绍animationanimation检索或设置对象所应用的动画特效.animation由“keyframe ...
- 为什么要用nginx
1.支持更多的连接数来响应并发请求连接. 2.占用内存小. 3.处理请求的流程和机制决定了他的高并发连接数. 处理并发请求优于apache Web服务器之Nginx详解(理论部分)
- pi4j,Netbeans中togglebutton跟Jbutton的区别
一组togglebutton中会始终有一个是按下去的状态 一组commandbutton就全部都始终都是弹起的状态
- XML 中可嵌入 cmd命令脚本
原文要参照代码 1. XML解析 Task逻辑块可相互组合,形成复杂的树状结构,其结构用XML表示,即写成XML文件的形式. 样例如下: <!-- 顺序执行块 --> <seq> ...
- asp.net导出EXCEL的好方法!(好用,导出全部数据)
1.调用方法: ExportExcel("application/ms-excel", "EXCEL名称.xls", GridView1, this.Page) ...
- 038改变状态栏的颜色(扩展知识:关于iOS不同版本的消息通知知识)
效果如下: ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController @e ...
- 升级到yosemite后homebrew报错的解决
报错会如下: /usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Ve ...
- 制作做最小的fedora、ubuntu , jeos系统
之前做过, 2018年4月底,最新的fedora28 .ubuntu18.04发布后,自己又尝试做了下. ubuntu的成功了,比较简单: fedora的其实不用自己去制作,直接定制官方的Atomic ...
- mysql中json_replace函数的使用?通过json_replace对json对象的值进行替换
需求描述: 在看mysql中关于json的内容,通过json_replace函数可以实现对json值的替换, 在此记录下. 操作过程: 1.查看带有json数据类型的表 mysql> selec ...
- ASP.NET用DataSet导出到Excel
//读取临时文件 GYYW.DA.Common.Base_SqlDataBase daBZDM = new GYYW.DA.Common.Base_SqlDataBase(); DataS ...