程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 3518 Boring counting

HDU 3518 Boring counting

編輯:C++入門知識

HDU 3518 Boring counting


n<1000,最後查詢的時候可以用n^2算法,如果是10000就不行了

 

#include 
#include
#include
using namespace std;
typedef long long ll;
#define N 1005
char s[N];
int r[N];
int wa[N],wb[N],wv[N],ws[N],Rank[N],sa[N],height[N];
int cmp(int *r,int a,int b,int l){
	return r[a]==r[b]&&r[a+l]==r[b+l];
}
void da(int *r,int *sa,int n,int m){
	int i,j,p,*x=wa,*y=wb;
	for(i=0;i=0;i--) sa[--ws[x[i]]]=i;
	for(j=1,p=1;p=j) y[p++]=sa[i]-j;
		for(i=0;i=0;i--) sa[--ws[wv[i]]]=y[i];
		swap(x,y);
		for(p=1,x[sa[0]]=0,i=1;i=len &&i<=l){//注意i>l的時候要跳出循環,不然會由於上一個數據引起錯誤 
					if(sa[i]maxi) maxi=sa[i];
					i++;
				}
				if(maxi-mini>=len) ans++;
				mini=sa[i];
				maxi=sa[i];
			}
		}
		printf("%I64d\n",ans);
	} 
	return 0;
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved