hdu 4691 Front compression (基于hash的LCP)
来源:互联网 发布:通用财会软件 编辑:程序博客网 时间:2024/06/09 13:38
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4691
题意:
分析:直接求LCP啊。。。
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef unsigned long long ULL;const int maxn = 1e5+6;const int seed = 131;ULL H[maxn],X[maxn];int Len;char str[maxn];void Init(){H[Len]=0;for(int i=Len-1;i>=0;i--)H[i]=H[i+1]*seed+str[i]-'a';X[0]=1;for(int i=1;i<Len;i++)X[i]=X[i-1]*seed;}ULL GetHash(int i,int L){return H[i]-H[i+L]*X[L];}int LCP(int a,int b,int lim){int ret=0,down=1,mid,up=lim;while(down<=up){mid=(down+up)>>1;if(GetHash(a,mid)==GetHash(b,mid)){down=mid+1;if(ret<mid)ret=mid;}elseup=mid-1;}return ret;}int GetLen(int x){if(x==0)return 1;int ret=0;while(x){ret++;x/=10;}return ret;}int main(){int i,j,Q,a,b,lim,pera,perb,f;long long in,ou;while(scanf("%s",str)!=EOF){Len=strlen(str);Init();scanf("%d",&Q);scanf("%d%d",&pera,&perb);in=perb-pera+1;ou=3+perb-pera;Q--;while(Q--){scanf("%d%d",&a,&b);in+=b-a+1;lim=min(perb-pera,b-a);f=LCP(pera,a,lim);ou+=GetLen(f)+1+(b-a-f)+1;pera=a;perb=b;}printf("%I64d %I64d\n",in,ou);}return 0;}
0 0
- hdu 4691 Front compression (基于hash的LCP)
- hdu 4691 Front compression(LCP+RMQ || hash,5级)
- HDU 4691 Front Compression [后缀数组] [LCP]
- hdu 4691 Front compression
- HDU 4691 Front compression
- HDU 4691 Front compression
- Hdu 4691 Front compression
- hdu 4691 Front compression
- hdu 4552 怪盗基德的挑战书 (基于hash的LCP)
- hdu 4691 Front compression (后缀数组)
- hdu 4691 Front compression (后缀数组)
- HDU 4691 Front compression(后缀数组 LCA)
- hdu 4691 Front compression(树连剖分)
- hdu 4691 Front compression(后缀数组)
- hdu 4691 Front compression (后缀数组)
- [后缀数组+rmq] hdu 4691 Front compression
- 【HDU】4691 Front compression 后缀数组+RMQ
- hdu 4691 Front compression (后缀数组+rmq)
- cocos2dx 3.x 弃用列表
- java 开发设置网络全局代理
- 黑马程序员--关于printf和scanf的一些总结
- cocos2dx 3.x api
- Go语言的传参和传引用[转]
- hdu 4691 Front compression (基于hash的LCP)
- android 自定义控件 自定义属性详细介绍
- 公网能访问内网的FTP服务器方法
- Tomcat启用debug模式
- 怎样在ABBYY PDF Transformer+中添加注释
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- 若要访问本地iis网站, 必须在管理员账户的上下文中运行visual studio
- iOS启动时如何添加引导页面 小demo
- C++中将构造函数或析构函数定义为private