程序员人生 网站导航

UVA 12338 哈希+二分最长前缀

栏目:互联网时间:2014-09-29 17:49:17

每个字符串都哈希之后,二个之间二分出最长前缀!

需要注意的是不能用数组存,会暴,用vector就行了。

 

#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include#include #include #include #include #define mem(a,b) memset(a,b,sizeof(a)) #define lson i<<1,l,mid #define rson i<<1|1,mid+1,r #define llson j<<1,l,mid #define rrson j<<1|1,mid+1,r #define INF 0x7fffffff #define maxn 100105 typedef long long ll; typedef unsigned long long ull; using namespace std; ull Hash,seed=131; vectorv[maxn]; char s[maxn]; int main() { //freopen("1.txt","r",stdin); int t,ii=1; scanf("%d",&t); while(t--) { int n,m,i,j,a,b; scanf("%d",&n); for(i=0;i>1; if(v[a][mid]==v[b][mid]) l=mid+1,ans=mid; else r=mid-1; } if(v[a][ans]!=v[b][ans]) printf("%d ",ans); else printf("%d ",ans+1); } } return 0; }


 

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐