data矩阵poj 2778 DNA Sequence

最近研究data矩阵,稍微总结一下,以后继续补充:

    ac自动机处理字符串,dp计算谜底,用矩阵来减速

每日一道理
巴尔扎克说过“不幸,是天才的进升阶梯,信徒的洗礼之水,弱者的无底深渊”。风雨过后,眼前会是鸥翔鱼游的天水一色;走出荆棘,前面就是铺满鲜花的康庄大道;登上山顶,脚下便是积翠如云的空蒙山色。 在这个世界上,一星陨落,黯淡不了星空灿烂,一花凋零,荒芜不了整个春天。人生要尽全力度过每一关,不管遇到什么困难不可轻言放弃。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const long long mod=100000;
struct
{int next[30],tmp,fail,lon;
}trie[111];
int lon;
int m,n;
struct matrix
{long long data[111][111];int size;matrix(int tmp,int lon){size=lon;for(int i=0;i<=size;i++)for(int j=0;j<=size;j++)data[i][j]=tmp;}matrix operator * (const matrix &xx) const{matrix ans(0,size);for(int p=0;p<=size;p++)for(int q=0;q<=size;q++)for(int i=0;i<=size;i++){ans.data[p][q]+=data[p][i]*xx.data[i][q];ans.data[p][q]%=mod;}return(ans);}
};
void trieini()
{memset(trie,0,sizeof(trie));lon=0;
}
void insert(char s[])
{int t=0;int n=strlen(s+1);for(int i=1;i<=n;i++){if(trie[t].next[s[i]-'A']==0){trie[t].next[s[i]-'A']=++lon;trie[lon].lon=i;}t=trie[t].next[s[i]-'A'];if(i==n)trie[t].tmp++;}
}void getfail()
{int root=0;queue <int> q;q.push(root);trie[root].fail=root;while(!q.empty()){int t=q.front();q.pop();for(int i=0;i<26;i++){if(trie[t].next[i]){if(t==root){int u=trie[t].next[i];trie[u].fail=root;q.push(u);continue;}int u=trie[t].next[i];int tmp=trie[t].fail;while(tmp!=root&&trie[tmp].next[i]==0)tmp=trie[tmp].fail;if(trie[tmp].next[i])trie[u].fail=trie[tmp].next[i];elsetrie[u].fail=root;q.push(u);}}}for(int i=1;i<=lon;i++){int t=i;while(t!=root){int u=trie[t].fail;trie[t].tmp+=trie[u].tmp;t=u;}}
}void find(matrix &a)
{int root=0;for(int k=0;k<=lon;k++){if(trie[k].tmp) continue;for(int i=0;i<26;i++){if(i+'A'!='A')if(i+'A'!='C')if(i+'A'!='T')if(i+'A'!='G')continue;int t=k;while(t!=root&&trie[t].next[i]==0)t=trie[t].fail;if(trie[t].next[i]){int u=trie[t].next[i];if(!trie[u].tmp)a.data[k][u]++;}elsea.data[k][0]++;}}
}int main()
{while(scanf("%d %d",&m,&n)!=EOF){trieini();char s[15];for(int i=1;i<=m;i++){scanf("%s",s+1);insert(s);}getfail();matrix a(0,lon);find(a);matrix ans(a);n--;while(n){if(n&1)ans=ans*a;a=a*a;n/=2;}int answer=0;for(int i=0;i<=lon;i++){answer+=ans.data[0][i];answer%=mod;}cout<<answer<<endl;}return 0;
}

文章结束给大家分享下程序员的一些笑话语录: IBM和波音777
  波音777是有史以来第一架完全在电脑虚拟现实中设计制造的飞机,所用的设备完全由IBM公司所提供。试飞前,波音公司的总裁非常热情的邀请IBM的技术主管去参加试飞,可那位主管却说道:“啊,非常荣幸,可惜那天是我妻子的生日,So..”..
  波音公司的总载一听就生气了:“胆小鬼,我还没告诉你试飞的日期呢!”

--------------------------------- 原创文章 By
data和矩阵
---------------------------------

转载于:https://www.cnblogs.com/jiangu66/p/3153247.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP服务Fcgi进程及PHP解析优化

1、PHP引擎缓存加速常见四种软件&#xff1a;1.eAccelerator2.Zendcache3.xcache4.apc5.zendopcache php5.5自带2、使用tmpfs作为缓存加速缓存的文件目录 [rootweb02 ~]# mount -t tmpfs tmpfs /dev/shm -o size256m[rootweb02 ~]# mount -t tmpfs /dev/shm/ /tmp/eaccelerator…

JS中typeof与instanceof的区别

JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空&#xff0c;或者是什么类型的。但它们之间还是有区别的&#xff1a;typeof typeof 是一个一元运算&#xff0c;放在一个运算数之前&#xff0c;运算数可以是任意类型。 它返回值是一个字符串&#xff0c;该字符…

电路 晶振频率_都说晶振是电路的心脏,你真的了解它吗?

之所以说晶振是数字电路的心脏&#xff0c;就是因为所有的数字电路都需要一个稳定的工作时钟信号&#xff0c;最常见的就是用晶振来解决&#xff0c;可以说只要有数字电路的地方就可以见到晶振。常见种类我们常说的晶振&#xff0c;包含两种。一种需要加驱动电路才能产生频率信…

my-innodb-heavy-4G.cnf 配置文件参数介绍

温馨提示&#xff1a;本文参考 徐布斯 标准好青年本文章参数使用egrep从mysql配置的目录过滤出来进行分析&#xff0c;参考的两位可能不是my-innodb-heavy-4G.cnf的配置文件参数my-innodb-heavy-4G.cnf[client]#客户端配置 port 3306 #客户端端口号 socket …

手动创建数据库

手动创建数据库步骤:1、准备工作(创建相关目录、设置ORACLE_SID)2、生成参数文件3、启动实例3、脚本创建数据库4、脚本创建数据字典5、打开数据库 一: 准备工作 1、创建相关目录wyncrac为要创建的数据名,所以创建同名目录用来集中存储相关文件[oraclelocalhost wyncrac]$ lltot…

ios 数组中的字典排序_利用数组和字典,实现按指定规则的排序

大家好&#xff0c;今日我们继续讲解数组与字典解决方案&#xff0c;今日讲解第47讲&#xff1a;利用字典和数组&#xff0c;实现按指定规则的排序。随着字典讲解的深入,我们发现字典真的很神奇,在VBA代码中,给人以十分清爽的感觉,在这套数组与字典解决方案中,我会尽可能的把经…

MVC3学习:利用mvc3+ajax实现登录

用到的工具或技术&#xff1a;vs2010,EF code first,JQuery ajax,mvc3。 第一步&#xff1a;准备数据库。 利用EF code first&#xff0c;先写实体类&#xff0c;然后根据实体类自动创建数据库&#xff1b;或者先创建数据库&#xff0c;再写实体类&#xff0c;都可以。如果实体…

vue获取tr内td里面所有内容_vue 项目学习

首先页面的整体内容结构以及package.json 里面的内容package.jsonrouter.js 路由功能import Vue from vue import Router from vue-router import Login from /login;Vue.use(Router) let router new Router({routes: [{path: /,redirect: {name: Login},},{path: /Login,na…

lnmp环境搭建完全手册(四)——lnmp搭建(源码安装)

首先来介绍一下Nginx.Nginx是一个高性能的 HTTP 和 反向代理 服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。Nginx不仅可以作为web服务器,也可以作为负载均衡器,之前也有文章介绍,大家可以看一下. MySQL是一款开源免费的数据软件,MySQL是一个小型关系型数据库管理系统…

ubuntu中解压rar文件遇到乱码的解决方法

如上图所示&#xff0c;在用ubuntu的时候经常会遇见rar压缩文件打开出现乱码&#xff0c;解压的时候也会出现无效的编码等错误。 解决方法是用 sudo apt-get remove rar 卸载rar 然后用 sudo apt-get instal unrar 安装unrar 然后就可以解决这个问题了。 个人理解rar是用来压缩…

锐界机器人_2019款锐界智能家居远程控制使用介绍

2019款经过场地的绕圈测试&#xff0c;传祺GA6的制动系统依旧保持良好的响应速度&#xff0c;而且制动力输出没有虚位&#xff0c;从踩上制动踏板初段就能得到明显的制动力反馈。车头重量给前脸极大的压力&#xff0c;不过在极限过弯的情况下&#xff0c;悬架依旧提供了足够的支…

zabbix监控链接

http://www.abcdocker.com/

kmeans中的k的含义_硬质合金中P、M、K、N、S、H六大字母含义详解

数控技术在线订单 | 技术 | 干货 | 社群关注可加入机械行业群&#xff01;关注P类:硬质合金中&#xff0c;P类产品的切削范围是指碳钢&#xff0c;铸钢&#xff0c;包括0.25-0.25%C淬火和调质&#xff0c;易切钢包含退火与淬火调质&#xff0c;低碳合金钢含金元素少于5%的范围&…

openerp经典收藏 对象定义详解(转载)

对象定义详解 原文地址&#xff1a;http://shine-it.net/index.php/topic,2159.0.htmlhttp://blog.sina.com.cn/s/blog_57ded94e01013xa9.html本连载准备详细解密OpenERP的对象定义&#xff0c;内容包括深入理解OpenERP的对象&#xff0c;对象详细定义、字段详细定义、对象的预…

gitlab,ldap新用户无法登陆,报错 Could not authenticate you from Ldapmain because “Undefined method `provider‘

查看/var/log/gitlab/gitlab-rails/application.log日志&#xff0c;报错如下&#xff1a; 2022-06-16T07:31:57.865Z: (LDAP) Error saving user cnwangsan,ouzmjkf,dczmjkf,dccn (123847567qq.com): ["Email is not allowed for sign-up. Please use your regular email…

gitlab集成ldap用户后,禁用原来的账户体系进行拉取代码

gitlab在集成ldao用户后&#xff0c;经过测试&#xff0c;用户可以还可以通过原来的账号体系进行项目代码的拉取&#xff0c;需要把原来的账号体系的拉取功能关闭&#xff0c;使用ldap的账号体系进行工作开展。 方法如下&#xff1a; 在管理员-设置-通用-登录限制里把 Allow…

ffmpeg 分辨率 压缩_用GPU加速FFmpeg中的超分辨率功能

1. 简要回顾首先简单复述一下FFmpeg中对深度学习的支持情况&#xff0c;如上图所示&#xff0c;FFmpeg在libavfilter中支持基于深度学习的filter&#xff0c;目前已经支持sr, derain和dnn_processing等filter&#xff0c;其中&#xff0c;dnn_processing是一个通用的filter&…

oFono学习笔记——GATChat(2):发送AT命令

摘要&#xff1a; 本文主要描述了GAtChat如何发送AT命令的全过程 1. GAtChat AT命令发送接口 在GAtChat库当中&#xff0c;根据AT命令返回结果的不同&#xff0c;GAtChat定义了四种不同的发送接口&#xff1a;一般发送接口&#xff0c;表单发送接口&#xff0c;PDU表单发送接口…

archery集成ldap无法登陆

archery配置ldap之后,浏览器提示用户名或密码错误,请重新输入,去ldap日志查看,用户已经认证成功。 archery服务报错如下: [2022-06-16 14:00:03,221][MainThread:140070598219584][task_id:django_auth_ldap][backend.py:368][WARNING]- Caught LDAPError while authenti…

mysql存储过程输入参数拆分_一文看懂mysql数据库存储过程、函数、视图、触发器、表...

概述抽空总结一下mysql的一些概念性内容&#xff0c;涉及存储过程、函数、视图、触发器等。一、查看存储过程、函数、视图、触发器、表1、存储过程select * from mysql.proc where typePROCEDURE;show procedure status; show create procedure proc_name; //存储过程定义2、函…