zoj 3817 2014牡丹江網賽 字串雜湊

2021-06-25 14:40:50 字數 1172 閱讀 6413

比賽的時候沒看這道題,遺憾,不過想到演算法不難,但是寫**比較考**能力,我自己寫了兩次都不行,還是看了別人**,寫下了這個

學到:1、hash字串第乙個下表為0的空起來,寫起來方便

2、hash匹配的全部情況就是以text串的所有位置為起點做匹配,當text比patern小而且text可以迴圈時,這麼確定

3、dfs的時候,為了加快,可以預估計至少需要匹配多長

int l=min(len,n+1-st);  這樣寫法 節省了很多時間

4、注意預處理hash  b的次方 以及字串的hash

//#pragma comment(linker, "/stack:102400000,102400000")

#include #include #include #include #include #include #include #include #include #include using namespace std;

#define ls(rt) rt*2

#define rs(rt) rt*2+1

#define ll long long

#define ull unsigned long long

#define rep(i,s,e) for(int i=s;i>1;

const double eps = 1e-8;

const int inf = 100000000;

const ull b=1e8+7;

const int maxn = 100000+5;

vector< pair> ans;

char str[maxn];

ull ha[9][maxn],tt[maxn],hb[maxn];

//int leg[10],lenp;

int n,m;

void calhb()

void read()

scanf("%s",str+1);

calhb();

}int dfs(int k, int st, int len)

return 0;

}int solve()

return 0;

}vectorop;

void out()

{ op.clear();

int cnt=0;

for(int i=0;i

按順序輸出ZOJ

description 讀入乙個字串,字串中包含zoj三個字元,個數不一定相等,按zoj的順序輸出,當某個字元用完時,剩下的仍然按照zoj的順序輸出。input 題目包含多組用例,每組用例佔一行,包含zoj三個字元,當輸入 e 時表示輸入結束。1 length 100。output 對於每組輸入,請...

很有趣的ZOJ

是不是zoj不能新增注釋的啊?很奇怪。這是1057的ac include stdio.h include math.h int main else printf a has d points.b has d points.n aa,bb return 0 新增一行注釋之後 include stdio...

zoj 2325 線段相交

本題可以直接排序再算可以看到全部的那段線段長度,也可以用相似三角形來做,我選擇後者 具體方法 先把障礙物按x從小到大排序,然後就遍歷,令top l.x1,記得要先連線a i x1與hou.x2,再用相似三角形求出要求區域的右端點,在類似的求出區域的左端點,要注意不能超過l.x2,因為最後還要l.x2...