ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

字符串基础例题

2022-02-27 20:02:22  阅读:175  来源: 互联网

标签:int 基础 len ss ai lenth 字符串 例题 po


1.str

知识点:hash算法    +   线性DP

f[i][j]=sum(f[i-1][j-ai[k]])   匹配到第i个碱基在原蛋白质序列的方案总数

const int N=10000+10;int len;
unsigned ll data[100+3][10+2],s[10000+10],po[N];
int k;int mod=1e9+7;int ai[N],lenth[100+3][10+2];
int f[100+3][N];
char ss[N];//从i+1到 n的碱基序列的最小长度
int ans;
int main()
{
// freopen("exam.txt","r",stdin);
k=re();
scanf("%s",ss+1); len=strlen(ss+1);po[0]=1;
_f(i,1,len)
{
s[i]=s[i-1]*131+ss[i]-'A'+1;po[i]=po[i-1]*131
}
_f(i,1,k)
{
ai[i]=re();
_f(j,1,ai[i])
{
scanf("%s",ss+1);
lenth[i][j]=strlen(ss+1);
_f(ii,1,lenth[i][j])data[i][j]=data[i][j]*131+ss[ii]-'A'+1;
}
}//处理完
_f(i,0,len)
f[0][i]=1;//初始化
_f(i,1,k)//处理到第i个碱基
{
_f(o,1,len)//已经到了原蛋白质的o位置
{
_f(j,1,ai[i])//安置第i个序列
{
if(o-lenth[i][j]+1<=0)continue;//下标越界

if(f[i-1][o-lenth[i][j]]>0&&data[i][j]==(s[o]-s[o-lenth[i][j]]*po[lenth[i][j]]))//可行性
f[i][o]+=f[i-1][o-lenth[i][j]],f[i][o]%=mod;//时刻取模

}
}
}

_f(i,1,len)
ans=(ans+f[k][i])%mod;
chu("%d",ans);
return 0;
}

标签:int,基础,len,ss,ai,lenth,字符串,例题,po
来源: https://www.cnblogs.com/403caorong/p/15943197.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有