摘要:
求模式串在主串中出现的次数,需要理解KMP后才能做,其实还是挺简单的,只要匹配完成一次后,j滑动到next[j]继续比较即可。刚开始一直TLE,上网找别人的代码比对,发现自己多写了一层循环,太粗心了……/* * hdu1686/linux.cpp * Created on: 2011-8-29 * Author : ben */#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>using namespace 阅读全文
摘要:
网上好多说得不够清楚,不过真正理解了KMP的next数组的含义,一点就通了。非优化的next数组的含义是:next[i]=k表示模式串下标为i的字符的前k个字符与开头的前k个字符相等,那么从0到i-1的模式串必然是循环的,循环节为从0到next[i] - (2 * next[i] - i),其中 2 * next[i] - i表示的是从后往前的部分与从前往后的部分相交的长度。/* * hdu1358/linux.cpp * Created on: 2011-8-29 * Author : ben */#include <cstdio>#include <cstdlib> 阅读全文
摘要:
刚学Sunday算法,都说Sunday比KMP快,于是我用Sunday打了半天,一直TLE,最后还是用KMP过了。不知道是不是我对Sunday算法的理解不正确,还是它只适合真正字符串的模式匹配。/* * hdu1711/linux.cpp * Created on: 2011-8-20 * Author : ben */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#define MAX_PAR_LEN 10005#define MAX_TXT_L 阅读全文
摘要:
水题,对输入的每一条信息,都对所有的四位数逐一判断是否符合,记录下即可。/* * hdu1172/linux.cpp * Created on: 2011-8-29 * Author : ben */#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>using namespace std;bool maybeans[10005];void work();int main() {#ifndef ONLINE_J 阅读全文
摘要:
长方体与球相交则必然是长方体中离球最近的点在球面上或球内,而长方体离球最近点必是每一维中离球最近的坐标组成的点。/* * hdu2436/linux.cpp * Created on: 2011-8-28 * Author : ben */#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>using namespace std;typedef long long I64;void work();int mai 阅读全文