热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

bzoj5337[TJOI2018]str(Hash+dp)

用hash处理字符串匹配,变成若干线段接力覆盖的问题,瞎dp一下就好了qaq 复杂度O(m(len+n))O(m(len+n))#include #inc

用hash处理字符串匹配,变成若干线段接力覆盖的问题,瞎dp一下就好了qaq
复杂度O(m(len+n))O(m(len+n))

#include
#include
#include
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define N 10010
#define ull unsigned long long
#define k1 11113
#define mod 1000000007
inline int read(){int x&#61;0,f&#61;1;char ch&#61;getchar();while(ch<&#39;0&#39;||ch>&#39;9&#39;){if(ch&#61;&#61;&#39;-&#39;)f&#61;-1;ch&#61;getchar();}while(ch>&#61;&#39;0&#39;&&ch<&#61;&#39;9&#39;) x&#61;x*10&#43;ch-&#39;0&#39;,ch&#61;getchar();return x*f;
}
int n,m,a[2][N];
char s[N],t[N];
ull bin[N],hs[N];
inline ull calhs(int y,int x){return hs[y]-hs[x-1]*bin[y-x&#43;1];
}
inline void inc(int &x,int y){x&#43;&#61;y;x%&#61;mod;}
int main(){
// freopen("str.in","r",stdin);
// freopen("str.out","w",stdout);m&#61;read();scanf("%s",s&#43;1);n&#61;strlen(s&#43;1);bin[0]&#61;1;int p&#61;0;for(int i&#61;0;i<&#61;n;&#43;&#43;i) a[0][i]&#61;1;for(int i&#61;1;i<&#61;n;&#43;&#43;i) bin[i]&#61;bin[i-1]*k1,hs[i]&#61;hs[i-1]*k1&#43;s[i];for(int ii&#61;1;ii<&#61;m;&#43;&#43;ii){int owo&#61;read();while(owo--){scanf("%s",t&#43;1);int len&#61;strlen(t&#43;1);ull hss&#61;0;for(int i&#61;1;i<&#61;len;&#43;&#43;i) hss&#61;hss*k1&#43;t[i];for(int i&#61;1;i<&#61;n;&#43;&#43;i){if(i&#43;len-1>n) break;if(calhs(i&#43;len-1,i)!&#61;hss) continue;inc(a[p^1][i&#43;len-1],a[p][i-1]);}}memset(a[p],0,sizeof(a[p]));p^&#61;1;}int ans&#61;0;for(int i&#61;1;i<&#61;n;&#43;&#43;i) inc(ans,a[p][i]);printf("%d\n",ans);return 0;
}


推荐阅读
  • 题目描述Takuru是一名情报强者,所以他想利用他强大的情报搜集能力来当中间商赚差价。Takuru的计划是让Hinae帮他去市场上买一个商品,然后再以另一个价格卖掉它。Takur ... [详细]
  • DescriptionclickmeSolution套路的状压期望DP题。。。考虑倒退期望:设fi,jrolepresentationstyleposi ... [详细]
  • 题面传送门Solution看到什么最大值最小肯定二分啊。check直接跑一个二分图匹配就好了。orzztl!!!代码实现*mail:mle ... [详细]
  • 796.[APIO2012]派遣在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。在这个帮派里,有一名忍者被称之为Master。 ... [详细]
  •   并查集是一种群众喜闻乐见的数据结构,其复杂度是数据结构中最奇葩的之一了,Tarjan证明其为阿克曼函数的反函数,在可以想象(不全面的解释啊)的范围内小于等于3。。。我们就把它当做O(1)吧。下面通 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • JZOJ 1266. 玉米田
    1266.玉米田(cowfood.pasccpp)(FileIO):input:cowfood.inoutput:cowfood.outTimeLimits:1000msMemor ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
author-avatar
lb小小凡人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有