poj 1743 hash
来源:互联网 发布:windows pe修复系统 编辑:程序博客网 时间:2024/05/17 05:17
求差,不多说了
一开始的思路是先找到4个相同的串,找出最长串。
果断TLE
然后瞄了解题报告,用二分加速
http://www.mamicode.com/info-detail-252988.html
自己的代码存在许多小问题,修改到崩溃
#include<iostream> #include<vector>#include <string> #include<algorithm> #include<fstream>#include<cmath> using namespace std; #define lch(i) ((i)<<1) #define rch(i) ((i)<<1|1) #define sqr(i) ((i)*(i)) #define pii pair<int,int> #define mp make_pair #define FOR(i,b,e) for(int i=b;i<=e;i++) #define FORE(i,b,e) for(int i=b;i>=e;i--) #define ms(a) memset(a,0,sizeof(a)) const int maxnum =20010;const int key = 177;int tol,n,m,newn;unsigned long long hashn[maxnum];unsigned long long p[maxnum];//邻接表unsigned long long tag[maxnum];int nth[maxnum];int head[maxnum];int nextn[maxnum];int total;void Clear(){FOR(i,0,maxnum-1) head[i]=-1;total=0;}int inserthash(unsigned long long lentag,int pos){int x = lentag%maxnum;for(int i=head[x];i!=-1;i=nextn[i]){if(tag[i]==lentag) return nth[i];}nth[total]=pos;tag[total]=lentag;nextn[total]=head[x];head[x]=total++; return pos;}bool check(int len){Clear();FOR(i,len,n-1){if(i-inserthash((unsigned long long)hashn[i]-hashn[i-len]*p[len],i)>len)return true;}return false;}int src[maxnum],_src[maxnum];int main() { p[0]=1;FOR(i,1,maxnum-1){p[i]=p[i-1]*key;}//fstream fin("G:/1.txt");Pretreatment();while(scanf("%d",&n),n){//fin>>n;tol=0;FOR(i,1,n){//fin>>note[i];scanf("%d",&_src[i]);}FOR(i,1,n-1){src[i]=_src[i+1]-_src[i]+88;}hashn[0]=0;FOR(i,1,n-1){hashn[i] = hashn[i-1]*key+src[i];}int l=0,r=n,mid;while(l<=r){mid = (l+r)>>1;if(check(mid)){l=mid+1;tol = mid;}else r = mid-1;}tol++;if(tol<5) tol=0;printf("%d\n",tol);}return 0;}
0 0
- poj 1743 hash
- POJ 1743 Musical Theme Hash+二分
- POJ 2503 Babelfish(HASH)
- poj 1200 hash
- POJ 2002 hash 题目
- POJ 3320 hash
- poj 1840 简单hash。
- POJ 1840 Eqs hash
- POJ-1840 Eqs【Hash】
- poj 1840 Eqs 【hash】
- poj 2503 Babelfish 【hash】
- POJ 3349 (hash)
- POJ 3274 (hash)
- POJ 1840 (hash)
- POJ 2002 (hash)
- poj 2002 -- hash
- POJ 1200 字符串hash
- Hash (POJ 2785)
- 线程池ThreadPoolExecutor参数设置
- Web前端开发学习2:动态网页
- Android基础之Intent的几种常用方法
- iOS 多线程之NSThread
- Android中使用Handler造成内存泄露的分析和解决
- poj 1743 hash
- 2015年大二上-数据结构-顺序表(1)-求集合并集
- linux管道机制
- Ubuntu解压缩zip,tar,tar.gz,tar.bz2
- Android Studio下NDK—JNI初涉
- okHttp使用中报Could not find method java.nio.file.Files.newOutputStreamo警告问题
- 工具产品设计心得
- j2ee建立的Dynamic Web Project没有web.xml
- 【SSH项目实战】国税协同平台-4.用户管理需求分析&CRUD方法2