比賽的時候沒看這道題,遺憾,不過想到演算法不難,但是寫**比較考**能力,我自己寫了兩次都不行,還是看了別人**,寫下了這個
學到: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...