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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spoj 8222 Substrings (后缀自动机)

發布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spoj 8222 Substrings (后缀自动机) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

spoj 8222 Substrings

題意:給一個字符串S,令F(x)表示S的所有長度為x的子串中,出現次數的最大值。求F(1)..F(Length(S))?

解題思路:我們構造S的SAM,那么對于一個節點s,它的長度范圍是[Min(s),Max(s)],同時他的出現次數是|Right(s)|。那么我們用|Right(s)|去更新F(Max(s))的值。那么現在的問題是如何快速求 |right(s)| 了還記得論文里parent tree嗎?看看那個就知道了,不懂可以留言。接下來還有一步,我們現在只更新了節點代表串長度的f[l],那介于 s->len 和 s->fa->len的長度的那些串怎么辦呢?好辦,我們從長往短dp推下來就可以了,因為長的串出現了,短的必然出現了,比如長為4的出現了5次,那么長為3,2,1的必然至少出現5次,這樣就把[s->len,s->fa->len]區間的也都更新進去了。(另外這題數據好弱。。我把字符范圍誤打成0->10都過了,僥幸排在了第一!!!)

?

#include<stdio.h> #include<string.h> #include<algorithm> using namespace std ;const int maxn = 250005 ;int fa[maxn<<2] , c[26][maxn<<2] , val[maxn<<2] ; int last , tot ; int f[maxn] , g[maxn<<2] ;int max ( int a , int b ) { return a > b ? a : b ; }inline int new_node ( int step ) {int i ;val[++tot] = step ;for ( i = 0 ; i < 26 ; i ++ ) c[i][tot] = 0 ;fa[tot] = 0 ;return tot ; }void add ( int k ) {int p = last , i ;int np = new_node ( val[p] + 1 ) ;while ( p && !c[k][p] ) c[k][p] = np , p = fa[p] ;if ( !p ) fa[np] = 1 ;else {int q = c[k][p] ;if ( val[q] == val[p] + 1 ) fa[np] = q ;else {int nq = new_node ( val[p] + 1 ) ;for ( i = 0 ; i < 26 ; i ++ ) c[i][nq] = c[i][q] ;fa[nq] = fa[q] ;fa[np] = fa[q] = nq ;while ( p && c[k][p] == q ) c[k][p] = nq , p = fa[p] ;}}last = np ; }void init () {tot = 0 ;last = new_node ( 0 ) ; }char s[maxn] ; int pos[maxn<<2] , ws[maxn<<2] ; int main () {while ( scanf ( "%s" , s ) != EOF ) {init () ;int i , len = strlen ( s ) ;for ( i = 0 ; i < len ; i ++ ) add ( s[i] - 'a' ) ;for ( i = 1 ; i <= tot ; i ++ ) ws[i] = 0 ;for ( i = 1 ; i <= tot ; i ++ ) ws[val[i]] ++ ;for ( i = 1 ; i <= tot ; i ++ ) ws[i] += ws[i-1] ;for ( i = 1 ; i <= tot ; i ++ ) pos[ws[val[i]]--] = i ;for ( i = 1 ; i <= tot ; i ++ ) g[i] = 0 ;for ( i = 1 ; i <= len ; i ++ ) f[i] = 0 ;int p = 1 ;for ( i = 0 ; i < len ; i ++ ) g[p=c[s[i]-'a'][p]] ++ ;for ( i = tot ; i >= 1 ; i -- ) {p = pos[i] ;f[val[p]] = max ( f[val[p]] , g[p] ) ;g[fa[p]] += g[p] ;}for ( i = len - 1 ; i >= 1 ; i -- )f[i] = max ( f[i] , f[i+1] ) ;for ( i = 1 ; i <= len ; i ++ )printf ( "%d\n" , f[i] ) ;} }


?

?

總結

以上是生活随笔為你收集整理的spoj 8222 Substrings (后缀自动机)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品一区三区 | 欧美精品偷拍 | 日本欧美精品 | 久久综合色视频 | 99re在线视频免费观看 | 黑人操日本女优 | 亚洲国产欧美日韩 | 国产1区二区 | 日韩在线一区二区三区四区 | 欧美精品99 | 免费看国产曰批40分钟 | 男女做网站 | 激情小视频| 特大巨交吊性xxxx | 亚洲精品一区二区三区不卡 | 国产精品九九九九九 | 国产精品宾馆在线 | 中文字幕一区二区三区四区免费看 | 日韩国产欧美在线视频 | 成年人在线免费观看视频网站 | 国产色悠悠| 一区二区成人在线 | 欧美成人激情在线 | 国产国语videosex另类 | 在线观看 中文字幕 | 久久韩国 | 免费观看成人在线视频 | 又黄又爽又色视频 | 国产熟女高潮视频 | 韩国伦理在线视频 | 自拍偷拍在线视频 | 日韩视频在线观看一区二区 | 美景之屋电影免费高清完整韩剧 | 97超碰精品 | 国语对白在线观看 | 99精品在线视频观看 | 亚洲精品视频网 | 亚洲精品1区2区3区 国产丝袜网站 | 国产中文字字幕乱码无限 | 色婷婷av一区二区三区软件 | av天天干| 成 人片 黄 色 大 片 | 中文日本在线 | 大尺码肥胖女系列av | 九九影院最新理论片 | 日韩欧美视频在线播放 | 九九精品免费 | 中文字幕av一区二区三区人妻少妇 | 国产精品自拍区 | 超碰在线网址 | 99人妻少妇精品视频一区 | 亚洲国内自拍 | 久久男人精品 | 亚洲精品无码久久久久 | 久久国产精品久久精品国产 | 国产精品视频一区二区三区在3 | 9i精品福利一区二区三区 | 久久国产一级 | 日韩福利在线视频 | 无码人妻丰满熟妇精品区 | 天天爽天天搞 | 欧美日韩国产一级 | 国产高潮呻吟久久 | av免费网站观看 | 日韩中文字幕av | 欧美xxxx黑人xyx性爽 | 欧美日韩在线综合 | 亚洲欧美韩日 | 狠狠激情 | 五月天一区二区 | 国产精品无码电影在线观看 | 黄色一级生活片 | 天天干一干 | 亚洲午夜片 | 国产在线视频资源 | 成人91| 91大神久久 | 双性人bbww欧美双性 | 精品久久久国产 | 筱田优全部av免费观看 | 97人妻天天摸天天爽天天 | 亚洲午夜精品一区二区三区 | 成人免费视频国产免费网站 | 樱花草涩涩www在线播放 | 日韩欧美在线观看一区 | 久久久精品久久 | av女星全部名单 | 国内自拍2020 | 黑人玩弄人妻一区二区三区 | 91丨国产丨白丝 | 中文字幕高清在线播放 | 少妇厨房愉情理伦bd在线观看 | 亚洲天堂导航 | 日韩无套| 亚洲日批 | 性户外野战hd | 欧美一二三视频 | 亚洲免费视频一区二区 | 91麻豆网|