bzoj1009:看了下面那道反過來看這一道還真是有點豁然開朗的感覺。
poj2778:這題是它的加強版,模式串變成了m個,那麼用ac自動機就行了,不過看似簡單但是理解ac自動機是乙個圖的過程還是有些奇妙的。
**如下:
bzoj1009:
#include "cstdio"
#include "cstdlib"
#include "iostream"
#include "algorithm"
#include "cstring"
#include "queue"
using namespace std;
#define max_size 50
#define inf 0x3f3f3f3f
#define eps
#define mod k
inline int get_int()
while(ch < '0' || ch > '9');
dowhile(ch >= '0' && ch <= '9');
return num * flag;}
int next[max_size], x[max_size];
int n, k, m, ans;
struct matrix
inline void operator *= (matrix const &a)
inline matrix operator ^ (const int k)
return ans;
}}a, dp;
int main()
a.n = a.m = m - 1;
for(int i = 0; i < m; ++i)
}dp.a[0][0] = 1;
dp.n = 0;
dp.m = m - 1;
dp *= (a ^ n);
for(int i = 0; i < m; ++i)
ans = (ans + dp.a[0][i]) % mod;
cout << ans << endl;
return 0;
}
poj2778:
#include "cstdio"
#include "cstdlib"
#include "iostream"
#include "algorithm"
#include "cstring"
#include "queue"
using namespace std;
#define max_size 105
#define inf 0x3f3f3f3f
#define eps
#define mod 100000
inline int get_int()
while(ch < '0' || ch > '9');
do while(ch >= '0' && ch <= '9');
return num * flag;
}class node
*root, *empty;
class matrix
inline matrix operator ^ (int k) const
return ans;
}}a, ans;
int n, m, total;
bool visit[max_size];
char word[max_size];
inline node* new()
inline int get(char ch)
inline void build_trie()
now -> flag = true; }}
inline void build_acam()
else
now -> next[i] = now -> fail -> next[i]; }}
inline void get_matrix()
} }a.n = a.m = total - 1;
}int main()
OI刷題記錄
2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...
面試刷題記錄
寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...
刷題記錄 2015 11 14
現在每天做的題都記錄一下,免得不知道自己在幹什麼。poj2406 用next陣列的定義求迴圈節 poj3261 字尾陣列 題 spoj705 同上,這題我wa了幾次,結果發現 我以為字串只有大寫字母,其實有小寫。如下 poj2406 author duyixian date 2015 11 14 1...