題意:
給你乙個字串,問你有多少個p,滿足s[i] == s[i+p](i+p <= len)。
思路:一開始往kmp想了,不斷遞迴迴圈節,但感覺不是很好搞,然後就想了一下exkmp,發現exkmp就是專門搞這種事的,因為算的是字尾和整個的公共部分,如果這個公共部分等於字尾的長度,那就滿足題目要求的條件,把(串的長度 - 字尾的長度)加入答案,最後排個序就可以了。 注意整個串的情況要特判一下,不然加入答案的就是0而不是整個串的長度。
吐槽一下編譯器的版本,交了好幾發ce,還不給為什麼ce,很氣。
/**
* author : zzy
* date : 2020-04-20-16.09.17 monday
*/#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define fi first
#define se second
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define forn(i, n) for (int i = 0; i < (int)(n); ++i)
#define for1(i, n) for (int i = 1; i <= (int)(n); ++i)
#define ford(i, a, b) for (int i = (int)(a); i >= (int)b; --i)
#define fore(i, a, b) for (int i = (int)(a); i <= (int)(b); ++i)
#define rep(i, l, r) for (int i = (l); i <= (r); i++)
#define per(i, r, l) for (int i = (r); i >= (l); i--)
#define ms(x, y) memset(x, y, sizeof(x))
#define sz(x) ((int)(x).size())
using
namespace std;
typedef pair<
int,
int> pii;
typedef vector<
int> vi;
typedef vector vpi;
typedef vector vvi;
typedef
long
long i64;
typedef vector vi64;
typedef vector vvi64;
typedef pair pi64;
typedef
double ld;
template
<
class
t>
bool
uin(t &a, t b)
template
<
class
t>
bool
uax(t &a, t b)
const
int maxn =
1000000
+100
;int nxt[maxn]
, extend[maxn]
;char x[maxn]
, y[maxn]
;int res[maxn]
;void
pre_ekmp
(char x,
int m,
int nxt)
}}intmain()
sort
(res, res+now)
; cout <<
"case #"
<< k <<
": "
<< now <<
'\n'
;for
(int i =
0; i < now;
++i)
cout <<
'\n';}
//#ifdef local_define
// cerr << "time elapsed: " << 1.0 * clock() / clocks_per_sec << " s.\n";
//#endif
return0;
}
1901 賞賜 OR 災難
time limit 1 sec memory limit 128 mb submitted 418 solved 110 大g南征北戰終於打下了大片土地成立了g國,大g在開國大典上傳召幫助自己南征北戰的三大開國元勳小a,小b,小c進殿,並要賞賜三人大量寶物以顯示天恩浩蕩。大g在征服其他國家的時候搶...
vue 使用技巧總結 19 01
上面的函式中使用箭頭,會導致 this 捕獲不到 vue 例項。各位道友切記切記.目前通常使用的方式是 然後在查資料的時候翻到了乙個統一管理的方式 asynccomponent.js 檔案 export const component01 import views export const comp...
vijos1901 學姐的錢包
學姐每次出門逛街都要帶恰好m元錢,不過她今天卻忘記帶錢包了.可憐的doc只好自己湊錢給學姐,但是他口袋裡只有一元錢.好在doc的n位朋友們都特別有錢,他們答應與doc作一些交換.其中第i位朋友說 如果doc有不少於ri元錢,doc可以把手上所有的錢都給這位朋友,並從這位朋友手中換回vi元錢,但是這次...