【bzoj2764】[JLOI2011]基因补全 dp+高精度
题目描述
输入
输出
样例输入
10 3
CTAGTAGAAG
TCC
样例输出
4
题解
高中生物 dp+高精度
根据碱基互补配对原则,S的互补链是确定的,所以所求转化为在S的互补链中依次选择m个不同种碱基。。。
设f[i]为将T串的前i个选完的方案数。
那么对于S中的位置i和T中的位置j,如果它们互补,则更新答案,f[j]+=f[j-1]。
注意需要倒着循环,因为S串中的每个碱基只能用一次。
注意需要高精度。
#include <cstdio>
#define mod 100000000
char s1[2010] , s2[2010];
struct data
{
int len , num[100];
data operator+=(const data a)
{
int i;
for(i = 0 ; i < len || i < a.len || num[i] ; i ++ )
num[i] += a.num[i] , num[i + 1] += num[i] / mod , num[i] %= mod;
len = i;
return *this;
}
void output()
{
int i;
printf("%d" , num[len - 1]);
for(i = len - 2 ; i >= 0 ; i -- )
printf("%08d" , num[i]);
printf("\n");
}
}f[2010];
bool judge(char a , char b)
{
return (a == 'A' && b == 'T') || (a == 'G' && b == 'C') || (a == 'C' && b == 'G') || (a == 'T' && b == 'A');
}
int main()
{
int n , m , i , j;
scanf("%d%d%s%s" , &n , &m , s1 + 1 , s2 + 1);
f[0].len = f[0].num[0] = 1;
for(i = 1 ; i <= n ; i ++ )
for(j = m ; j ; j -- )
if(judge(s1[i] , s2[j]))
f[j] += f[j - 1];
f[m].output();
return 0;
}
【bzoj2764】[JLOI2011]基因补全 dp+高精度的更多相关文章
- BZOJ_2764_[JLOI2011]基因补全_DP_高精度
BZOJ_2764_[JLOI2011]基因补全_DP_高精度 Description 在生物课中我们学过,碱基组成了DNA(脱氧核糖核酸),他们分别可以用大写字母A,C,T,G表示,其中A总与T配对 ...
- BZOJ2764 [JLOI2011]基因补全
Description 在 生物课中我们学过,碱基组成了DNA(脱氧核糖核酸),他们分别可以用大写字母A,C,T,G表示,其中A总与T配对,C总与G配对.两个碱基序列能相互 匹配,当且仅当它们等长,并 ...
- 2764: [JLOI2011]基因补全
2764: [JLOI2011]基因补全 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 570 Solved: 187[Submit][Status ...
- [JLOI2011]基因补全
1973: [JLOI2011]基因补全 Time Limit: 1 Sec Memory Limit: 256 MB Description 在生物课中我们学过,碱基组成了DNA(脱氧核糖核酸), ...
- bzoj2764 基因补全
Description 在生物课中我们学过,碱基组成了DNA(脱氧核糖核酸),他们分别可以用大写字母A,C,T,G表示,其中A总与T配对,C总与G配对.两个碱基序列能相互匹配,当且仅当它们等长,并且任 ...
- bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1250 Solved: 621[Submit][Statu ...
- [JZYZOJ 1288][洛谷 1005] NOIP2007 矩阵取数 dp 高精度
https://www.luogu.org/problem/show?pid=1005 dp好想,高精度练手题,有点不舒服的是前后取数位置的计算,代码量太少才会写题这么慢,noip之前虽然重点放在 ...
- Oracle补全日志(Supplemental logging)
Oracle补全日志(Supplemental logging)特性因其作用的不同可分为以下几种:最小(Minimal),支持所有字段(all),支持主键(primary key),支持唯一键(uni ...
- python 添加tab补全
在平时查看Python方法用到tab补全还是很方便的. 1. mac 平台 配置如下: mac是类Unix平台,需要在添加一条配置内容到bash_profile 中(默认是没有这个文件,可以新建一个放 ...
随机推荐
- substr在oracle和mysql中的应用和区别
Oracle: 书写格式: (1)Select substr(字段名(string) , 起始位置(int) , 截取长度(int)) 示例: selectsubstr('123456',0,3)a ...
- MySql外键建立在哪里(更新)
一对一的时候:分为主表和附表 外键建立在附件上 附表的外键关联到主表的主键上,Example:学生表和学生信息表,在学生信息表上建立外键 一对多的时候:分为一和多 外键建立在多上 Exampl ...
- 一个好用的C# HttpHelper类
/// <summary> /// 类说明:HttpHelper类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理 /// 重要提 ...
- py函数初识
一. 什么是函数 1. 我们到目前为止, 已经可以完成一些软件的基础功能了. 那么我们来完成这样一个功能: 约x print("拿出手机") print("打开陌&quo ...
- Nodejs模块初始化
模块初始化 一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象.之后,缓存起来的导出对象被重复利用. 主模块 通过命令行参数传递给NodeJS以启动程序的模块被称为 ...
- git的基本操作总结
参考链接 https://blog.csdn.net/u012661010/article/details/73433872 https://blog.csdn.net/shj_php/article ...
- python基础之socket套接字基础part2
基于UDP的socket 面向无连接的不可靠数据传输,可以没有服务器端,只不过没有服务器端,发送的数据会被直接丢弃,并不能到达服务器端 1 #客户端 2 import socket 3 ip_port ...
- Android开发——View绘制过程源码解析(二)
0. 前言 View的绘制流程从ViewRoot的performTraversals开始,经过measure,layout,draw三个流程,之后就可以在屏幕上看到View了.上一篇已经介绍了Vi ...
- P1215 [USACO1.4]母亲的牛奶 Mother's Milk
P1215 [USACO1.4]母亲的牛奶 Mother's Milk 题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满 ...
- P2678 跳石头(二分答案)
P2678 跳石头 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间 ...