BZOJ2085 [Poi2010]Hamsters
来源:互联网 发布:sas怎么导入excel数据 编辑:程序博客网 时间:2024/05/29 16:22
因为字符串互不包含,所以求出从每一个字符串跑到另一个字符串最少要多少个字符,然后倍增floyd即可
求从一个字符串到另一个字符串要多少字符就是第一个字符串最长多少的后缀与第二个字符串的前缀相等,暴力即可,易知当长度都相等的时候复杂度最高,为n*sigma len
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>#include<iomanip>#include<vector>#include<map>#include<set>#include<bitset>#include<queue>#include<stack>using namespace std;#define MAXN 210#define MAXM 100010#define INF 1000000000#define MOD 1000000007#define eps 1e-8#define ll long long#define bas 233int n;struct mat{ll f[MAXN][MAXN];mat(){memset(f,0x3f,sizeof(f));}friend mat operator *(mat x,mat y){int i,j,k;mat z;for(k=0;k<=n;k++){for(i=0;i<=n;i++){for(j=0;j<=n;j++){z.f[i][j]=min(z.f[i][j],x.f[i][k]+y.f[k][j]);}}}return z;}};int m;char s[MAXM];int len[MAXN];vector<ll>h[MAXN];mat x,y;ll ans=1e18;ll mi[MAXM];ll get(int x,int l,int r){return (h[x][r]-h[x][l-1]*mi[r-l+1]%MOD+MOD)%MOD;}int main(){int i,j,k;scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%s",s+1);len[i]=strlen(s+1);ll now=0;h[i].push_back(0);for(j=1;j<=len[i];j++){now=(now*bas+s[j])%MOD;h[i].push_back(now);}}mi[0]=1;for(i=1;i<MAXM;i++){mi[i]=mi[i-1]*bas%MOD;}y.f[0][0]=0;for(i=1;i<=n;i++){x.f[0][i]=len[i];y.f[i][i]=0;for(j=1;j<=n;j++){int L=0;for(k=1;k<len[i]&&k<len[j];k++){if(get(i,len[i]-k+1,len[i])==get(j,1,k)){L=k;}}x.f[i][j]=len[j]-L;}}while(m){if(m&1){y=y*x;}x=x*x;m>>=1;}for(i=1;i<=n;i++){ans=min(ans,y.f[0][i]);}printf("%lld\n",ans);return 0;}/*51000000000abbccddeea*/
0 0
- BZOJ2085 [Poi2010]Hamsters
- BZOJ2085[Poi2010] Hamsters
- BZOJ2085 POI2010 Hamsters
- BZOJ2085: [Poi2010]Hamsters
- 【bzoj2085】[Poi2010]Hamsters hash+倍增
- 【BZOJ2085】【Poi2010】Hamsters AC自动机bfs+倍增floyd
- POI2010 Hamsters
- POI2010 Hamsters
- [BZOJ 2085]POI2010 Hamsters
- [POI2010]CHO-Hamsters
- BZOJ 2085 Poi2010 Hamsters Hash+倍增Floyd
- BZOJ 2085 [Poi2010]Hamsters Hash+倍增floyd
- 2085: [Poi2010]Hamsters hash+倍增floyd
- [Hash 倍增Floyd] BZOJ 2085 [Poi2010]Hamsters
- bzoj 2085: [Poi2010]Hamsters hash+倍增floyd
- Pasha and Hamsters
- bzoj-2085 Hamsters
- POI2010 Antisymmetry
- 网络TCP建立连接为什么需要三次握手而结束要四次
- hdu5890 bitset 优化dp
- 时间复杂性为O (n2),是什么意思
- EndNote的插件不在word中显示以及在word 2010中采用EndNote X7插入引用的方法
- nth-of-type(n)选择器
- BZOJ2085 [Poi2010]Hamsters
- 从零开始学习音视频编程技术(二) 音频格式讲解
- Oracle 密码文件
- java基础
- GDB 常用命令
- Hierarchy Viewer Setup
- Codeforces Round #372 (Div. 2) A.B.C
- sqlite3实例
- 欢迎使用CSDN-markdown编辑器