摘要: 首先,由题意三个数都为正整数,且某两个数的和等于第三个,且第一轮提问中三个人都说不确定可知,三个人中没有两两相同的数存在。 这样就排除了A,D 然后看选项B 站在第三个人的立场,看到其他两个人是36,108则他自己可以为144或72。 这时第三个人如果假设他是72,那么在108那个人的眼中本来为36 阅读全文
posted @ 2016-03-04 20:47 chenhuan001 阅读(217) 评论(0) 推荐(0) 编辑
摘要: void RMQ_init() { for(int i=1; i<=n; i++) dp[i][0]=s[i]; for(int j=1; (1<<j)<=n; j++) for(int i=1;i+(1<<j)-1<=n;i++) dp[i][j]=max(dp[i][j-1],dp[i+(1<< 阅读全文
posted @ 2016-03-04 20:28 chenhuan001 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 换了个模板。 O(n)复杂度求P串出现在T串中的所有位置。 void getFail(char* P, int* f) { int m = strlen(P); f[0] = 0; f[1] = 0; for(int i = 1; i < m; i++) { int j = f[i]; while( 阅读全文
posted @ 2016-03-04 08:40 chenhuan001 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 扩展KMP指的是 对于给出的串S和T,以O(n)的时间求出。 对于所有0<=i<len(S),S(i,i+1,...,len(s)-1)与T的最长前缀长度。 next[i]为满足B[i..i+z-1]==B[0..z-1]的最大的z值。 以下是模板: #include <iostream> #inc 阅读全文
posted @ 2016-03-04 00:40 chenhuan001 阅读(306) 评论(0) 推荐(0) 编辑