2764: [JLOI2011]基因补全
来源:互联网 发布:怎样找淘宝客推广产品 编辑:程序博客网 时间:2024/05/23 13:28
题目链接
题目大意:给定一个长度为n的碱基序列S和一个长度为m的碱基序列T,现在希望向序列T里补一定的碱基使得序列S和序列T配对,求方案数
题解:
大力高精度
我的收获:naive
#include <iostream>#include <cstring>#include <cstdio>using namespace std;#define rad 100000000#define B 8int n,m,p=1,l=0;char s1[2005],s2[2005];struct Bi{ int s[105],l; Bi(){l=1;}}f[2][2005];Bi operator + (Bi a,Bi b){ Bi c;memset(c.s,0,sizeof(c.s)); c.l=a.l>b.l?a.l:b.l; for(int i=1;i<=c.l;i++){ c.s[i]+=a.s[i]+b.s[i]; if(c.s[i]>=rad){c.s[i]-=rad;c.s[i+1]++;} } if(c.s[c.l+1]) c.l++; return c;}void print(Bi a){printf("%d",a.s[a.l]);for(int i=a.l-1;i;i--) printf("%08d",a.s[i]);}bool judge(char a,char b){return (a=='A'&&b=='T')||(a=='G'&&b=='C')||(a=='C'&&b=='G')||(a=='T'&&b=='A');}void work(){ f[0][0].s[1]=1,f[1][0].s[1]=1; for(int i=1;i<=n;i++,p^=1,l^=1) for(int j=1;j<=m;j++){ f[p][j]=f[l][j]; if(judge(s1[i],s2[j])) f[p][j]=f[p][j]+f[l][j-1]; } print(f[l][m]);}void init(){ scanf("%d%d%s%s",&n,&m,s1+1,s2+1);}int main(){ init(); work(); return 0;}
阅读全文
0 0
- 2764: [JLOI2011]基因补全
- BZOJ 2764 [JLOI2011]基因补全
- bzoj2764 [JLOI2011]基因补全
- 基因补全
- 自动补全和菜单补全
- 自动补全
- 口译谚语 (补全)
- jquery自动补全
- vrapper补全设置
- 自动补全
- vim自动补全
- vim 自动补全
- vim智能补全
- vim其他补全
- vim自动补全
- Combobox 自动补全
- javaScript自动补全
- 自动补全
- 今日头条|张一鸣:我遇到的优秀年轻人的5个特质
- js綁定快捷鍵
- dbutils和反射实现ORM问题整理
- C++文件流
- ios-swift基础
- 2764: [JLOI2011]基因补全
- composer方式安装thinkphp5
- 怎么将数字数组转为字符数组 (python)
- 嵌入式linux平台设备驱动(设备驱动模型)开发之linux内核中的设备
- 数据库一:深入理解数据库磁盘存储(Disk Storage)
- 【BZOJ1087】【SCOI2005】互不侵犯
- 【笔记篇】莫队算法(一)
- 3262: 陌上花开
- linux free命令学习笔记