<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      有些東西不專(zhuān)門(mén)記一下就要忘。。。

      kmp

      核心是 \(next\) 數(shù)組, 即當(dāng)前綴的除去自身的最大 \(border\) 。在字符串匹配時(shí)考慮雙指針,一旦失配就跳 \(next\),找到可能再次匹配的開(kāi)始位置 \(p\) 。基于 \(border\) 的性質(zhì),只要 \(s[i - j + 1, i]\)\(t[1, j]\) 匹配,\(s[p, i]\)\(s[i - j + (i - p + 1), i]\) 相等。首先對(duì) \(t\) 自己進(jìn)行匹配,求 \(next_p\) 的時(shí)候用已經(jīng)求出的 \(next_{1 \to p}\) 更新即可。

      #include <bits/stdc++.h>
      using namespace std;
      constexpr int N = 1e6 + 5;
      int n, m, nxt[N]; char s1[N], s2[N];
      int main() {
      	scanf("%s %s", s1 + 1, s2 + 1);
      	n = strlen(s1 + 1), m = strlen(s2 + 1);
      	for (int i = 2, j = 0; i <= m; ++i) {
      		while (j && s2[j + 1] != s2[i]) j = nxt[j];
      		nxt[i] = j += (s2[j + 1] == s2[i]);
      	}
      	for (int i = 1, j = 0; i <= n; ++i) {
      		while (j && s2[j + 1] != s1[i]) j = nxt[j];
      		if ((j += (s1[i] == s2[j + 1])) == m) {
      			printf("%d\n", i - m + 1);
      			j = nxt[j];
      		}
      	}
      	for (int i = 1; i<= m; ++i) {
      		printf("%d ", nxt[i]);
      	}
      	return 0;
      }
      

      next數(shù)組很有用,所以kmp是很有必要學(xué)的,當(dāng)然字符串題實(shí)在不行就hash。

      ACAM

      posted on 2023-11-12 19:37  Elegos  閱讀(12)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲另类激情专区小说图片| 胸大美女又黄的网站| 福利视频一区二区在线| 午夜射精日本三级| 人人妻人人狠人人爽天天综合网| 人妻无码av中文系列久| 成人免费A级毛片无码片2022| 国产精品久久久久影院色| 99久久99久久久精品久久| 亚洲男人AV天堂午夜在| 牙克石市| 国产精品一区二区三区三级| 午夜福利高清在线观看| 国产精品久久国产精麻豆99网站| 熟女少妇精品一区二区| 精品无码老熟妇magnet| 国产小受被做到哭咬床单GV| 内射中出无码护士在线| 中文字幕不卡在线播放| 免费看婬乱a欧美大片| 国产精品爽爽久久久久久| 精品激情视频一区二区三区 | 成人影片一区免费观看| 国产老熟女视频一区二区| 亚洲av成人免费在线| 日韩av中文字幕有码| 国产性色的免费视频网站| 国产成人理论在线视频观看| 久久永久视频| 在国产线视频A在线视频| 国产在线无码不卡播放| 国产av丝袜熟女一二三| 精品不卡一区二区三区| 东方av四虎在线观看| 欧美日韩在线亚洲二区综二| 久久亚洲av午夜福利精品一区| 亚洲国产一区二区精品专| 国产suv精品一区二区四| ww污污污网站在线看com| 欧美午夜小视频| 美腿丝袜亚洲综合第一页|