日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Luogu P2463 [SDOI2008]Sandy的卡片

發(fā)布時間:2025/3/8 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Luogu P2463 [SDOI2008]Sandy的卡片 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接 \(Click\) \(Here\)

真的好麻煩啊。。事實證明,理解是理解,一定要認(rèn)認(rèn)真真把板子打牢,不然調(diào)鍋的時候真的會很痛苦。。(最好是八分鐘能無腦把\(SA\)碼對的程度\(QAQ\)

這個題最開始我想的是\(RMQ\)遍歷每一個子區(qū)間,但是意識到復(fù)雜度是\(O(N^2)\)然后就\(GG\)了。怎么說呢,后綴數(shù)組和二分似乎是很常見的組合(和莫隊也是?),這個題只需要在\(height\)數(shù)組里二分\(lcp\)長度即可,\(check\)函數(shù)里面處理一下,要讓區(qū)間內(nèi)所有原串都有至少一個子串。

#include <bits/stdc++.h> using namespace std;const int N = 200010;int s[N], id[N]; int n, m, num, len, tot = 10000; int sa[N], tp[N], rk[N], _rk[N], bin[N], height[N];void get_height (int n) {int k = 0;for (int i = 1; i <= n; ++i) {if (k != 0) k--;int j = sa[rk[i] - 1];while (s[i + k] == s[j + k]) k++;height[rk[i]] = k;} }void base_sort (int n, int m) {for (int i = 0; i <= m; ++i) bin[i] = 0;for (int i = 1; i <= n; ++i) bin[rk[tp[i]]]++;for (int i = 1; i <= m; ++i) bin[i] += bin[i - 1];for (int i = n; i >= 1; --i) sa[bin[rk[tp[i]]]--] = tp[i]; }void suffix_sort (int n, int m) {for (int i = 1; i <= n; ++i) {rk[i] = s[i];tp[i] = i;}base_sort (n, m);for (int w = 1; w <= n; w <<= 1) {int cnt = 0;for (int i = n - w + 1; i <= n; ++i) {tp[++cnt] = i;}for (int i = 1; i <= n; ++i) {if (sa[i] > w) {tp[++cnt] = sa[i] - w;}}base_sort (n, m);memcpy (_rk, rk, sizeof (rk));rk[sa[1]] = cnt = 1;for (int i = 2; i <= n; ++i) {rk[sa[i]] = _rk[sa[i]] == _rk[sa[i - 1]] && _rk[sa[i] + w] == _rk[sa[i - 1] + w] ? cnt : ++cnt;}if (cnt == n) break;m = cnt;} }bool vis[1010]; int sta[N], top = 0;bool can_use (int l) {while (top) vis[sta[top--]] = false;for (int i = 1; i <= len; ++i) {if (height[i] < l) {while (top) vis[sta[top--]] = false;}if (!vis[id[sa[i]]]) {vis[id[sa[i]]] = true;sta[++top] = id[sa[i]];if (top == n) return true;}}return false; }int main () {cin >> n;int ban = 2000;for (int i = 1; i <= n; ++i) {cin >> m;for (int j = 1; j <= m; ++j) {cin >> s[++len]; //把所有的字符串整合到一個里id[len] = i; // 表明主權(quán)(len號后綴(的lcp)屬于串i)}s[++len] = ++ban; //隔開}for (int i = len; i >= 1; --i) {s[i] = s[i] - s[i - 1] + 4000;}suffix_sort (len, 10000);get_height (len);int l = 0, r = len;while (l < r) {int mid = (l + r + 1) >> 1;if (can_use (mid)) {l = mid;} else {r = mid - 1;}}cout << l + 1 << endl; }

轉(zhuǎn)載于:https://www.cnblogs.com/maomao9173/p/10438209.html

總結(jié)

以上是生活随笔為你收集整理的Luogu P2463 [SDOI2008]Sandy的卡片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一区二区三区在线观看 | 免费黄色在线看 | 四虎免费影视 | 欧美熟妇精品一区二区 | 久久国产传媒 | 日韩美一区二区三区 | 91精品系列| 久久精品无码一区二区三区毛片 | 国产在线第一页 | 800av免费在线观看 | 在线视频亚洲欧美 | 69性视频| 五月六月婷婷 | 欧美理伦| 欧美精品欧美精品系列 | 黄色欧美视频 | 里番acg★同人里番本子大全 | 日韩欧美极品 | 久久福利影院 | 本田岬av| 久久精品tv | 欧美在线不卡 | 亚洲精品一区二区三区蜜桃久 | 中文字幕一区二区三区电影 | 日韩精品 欧美 | 自拍偷拍亚洲欧美 | 亚洲风情亚aⅴ在线发布 | 天天色综合影视 | 五月婷婷六月合 | 免费观看av | 国产一区不卡视频 | 男男做爰猛烈叫床爽爽小说 | 污色视频| 伊人久久大香线蕉av一区 | 久久国产劲爆∧v内射 | 九色激情网 | 亚洲最大色网站 | 久久国产一级 | eeuss国产一区二区三区 | 老头老太做爰xxx视频 | 91黑人精品一区二区三区 | 人妻体体内射精一区二区 | 国产香蕉97碰碰碰视频在线观看 | zzjj国产精品一区二区 | 正在播放国产一区 | 免费黄色三级网站 | 国产波霸爆乳一区二区 | 中文字幕一区二区三区乱码 | 亚洲一区二区免费看 | 桃色在线视频 | 日本猛少妇色xxxxx | 免费无码毛片一区二三区 | 亚洲一区二区激情 | 欧洲精品码一区二区三区免费看 | porn国产 | 欧美亚洲国产日韩 | 天天爽夜夜 | 天天鲁一鲁摸一摸爽一爽 | 毛片aaa| 性生活毛片| 久久91精品国产91久久小草 | 欧美激情亚洲 | 东方伊甸园av在线 | 亚洲精品乱码久久久久久不卡 | 欧美一区精品 | 久久精品黄 | 麻豆视频观看 | 第一页国产| 美女被草 | 黄色三级在线观看 | 欧美一二三区在线观看 | 国产福利在线视频 | 99re在线 | 国产精品国产三级国产a | 乱岳| 91在线视频| 国产做爰xxxⅹ高潮视频12p | 国产成人小视频 | 劲爆欧美第一页 | 午夜久久精品 | 高级家教课程在线观看 | 在线观看污污网站 | 制服丝袜影音先锋 | 亚洲精品一区二区三区四区 | 91视频免费观看网站 | 国产区在线 | 久久久久久久久久久福利 | 日韩av网站在线观看 | 欧美性生活网 | 伊人久久久久噜噜噜亚洲熟女综合 | 亚欧洲精品视频 | 男人日女人逼 | 中国极品少妇xxxx | 99久久国产综合 | 黄色69视频 | 日韩欧美视频一区 | 天堂va欧美va亚洲va老司机 | 国产四区视频 | 精品成人av一区二区在线播放 |