【洛谷4070】 [SDOI2016]生成魔咒(SAM)
傳送門
洛谷
Solution
考慮要求的是什麽,前綴的本質不同的字符串個數?
如果只要求一個串那麽顯然答案是\(\sum_{i=1}^{tot}len[i]-len[fa[i]]\)(實際上這個並不顯然,想一想為什麽)
接著就是在線的啦,你可別忘了SAM本身就是在線算法,每一次算一個貢獻就好了。
代碼實現
代碼戳這裏
【洛谷4070】 [SDOI2016]生成魔咒(SAM)
相關推薦
【洛谷4070】 [SDOI2016]生成魔咒(SAM)
show 就是 代碼實現 sum 在線 字符串 什麽 pcs problem 傳送門 洛谷 Solution 考慮要求的是什麽,前綴的本質不同的字符串個數? 如果只要求一個串那麽顯然答案是\(\sum_{i=1}^{tot}len[i]-len[fa[i]]\)(實際上這個
洛谷4070 BZOJ4516 SDOI2016 生成魔咒 SAM map
題目連結 題意: 你有 n n n次操作,每次往原串後面插入一個數,不同的數字看作不同的字元,問你每
【文文殿下】 [SDOI2016]生成魔咒
字符集大小為1e9.............使用 map 吧 統計本質不同的子串個數是SAM的經典應用之一 本質不同的子串個數其實就是\(\sum max(x)-min(x)+1\) 所以我們新建結點 \(np\) 時統計它的答案即可 根據我們統計的式子,顯然新建節點\(nq\)的時候,不會對答案造成
【BZOJ4516】【SDOI2016】生成魔咒(SAM)
Description 魔咒串由許多魔咒字元組成,魔咒字元可以用數字表示。例如可以將魔咒字元 1、2 拼湊起來形成一個魔咒串 [1,2]。 一個魔咒串 S 的非空字串被稱為魔咒串 S 的生成魔咒。
【洛谷 P3165】 [CQOI2014]排序機械臂 (Splay)
題目連結 debug了\(N\)天沒debug出來,原來是找後繼的時候沒有pushdown。。。 眾所周知,,Splay中每個編號對應的節點的值是永遠不會變的,因為所有旋轉、翻轉操作改變的都是父節點和子節點的指標。 於是記錄每個數在\(Splay\)中的位置,然後按大小升序排序,每次把第\(i\)個數轉到根,
【洛谷 P4008】 [NOI2003]文字編輯器 (Splay)
題目連結 \(Splay\)先練到這吧(好像還有道毒瘤的維護數列誒,算了吧) 記錄下游標的編號,維護就是\(Splay\)基操了。 另外資料有坑,資料是\(Windows\)下生成了,回車是'\n\r',我就被坑了。 #include <cstdio> #include <algorith
【洛谷 P1502】 窗口的星星(掃描線)
double fine define print 離散化 while down namespace names 題目鏈接 把每個星星作為左下角,做出長為\(w-0.5\),寬為\(h-0.5\)的矩形。 \(-0.5\)是因為邊框上的不算。 離散化\(y\)坐標。 記錄\(
【洛谷4770】 [NOI2018]你的名字(SAM,線段樹合並)
直接 www pro noi line ubun 要求 span 自動機 傳送門 洛谷 Solution 做過的比較玄學的後綴自動機。 果然就像\(Tham\)所講,後綴自動機這種東西考場考了不可能做的出來的。。。 考慮如果\(l=1,r=|S|\)的怎麽做? 直接建後綴自
【洛谷P1641】[SCOI2010]生成字符串
個數 ati es2017 name span thml www 生成 n) 題目描述 lxhgww最近接到了一個生成字符串的任務,任務需要他把n個1和m個0組成字符串,但是任務還要求在組成的字符串中,在任意的前k個字符中,1的個數不能少於0的個數。現在lxhgww想要知道
【洛谷 P4072】 [SDOI2016]征途(斜率優化)
ret int 斜率 clas mem print play double memset 好久沒寫斜率優化板子都忘了, 硬是交了十幾遍。。 推一下柿子就能得到答案為 \[m*\sum x^2-(\sum x)^2\] 後面是個定值,前面簡單dp,斜率優化一下就行了。 \(f
【LG4070】[SDOI2016]生成魔咒
構建 char break oid www. www org tchar ans 【LG4070】[SDOI2016]生成魔咒 題面 洛谷 題解 如果我們不用在線輸的話,那麽答案就是對於所有狀態\(i\) \[ \sum (i.len-i.fa.len) \] 現在我們需要
2018.11.07【CQOI2011】【BZOJ3295】【洛谷P3157】動態逆序對(樹狀陣列套動態開點線段樹)
BZOJ傳送門 洛谷傳送門 解析: 首先我們可以通過一個線段樹求出逆序對個數,然後就是亂搞的時間了。 顯然每次刪除一個數,需要我們查詢前面比他大的數的個數和後面比他小的數的個數,這個就是裸的樹套樹了。這道題可以用樹狀陣列套線段樹動態開點。 程式碼: #
【洛谷1580】yyy loves Easter_Egg I(字串處理題)
點此看題面 大致題意: 略。(一道模擬題,自己去看題面吧) 幾個字元陣列函式 純粹是一道字串處理題,就當是學了一下各種與字元陣列相關的函式吧! \(gets()\):這個是比較常用的函式,就是讀入一行的字元。 \(strlen()\):求出字元陣列的長度。 \(sscanf()\):從一個字元
【洛谷2216】[HAOI2007] 理想的正方形(二維RMQ)
點此看題面 大致題意: 求出一個矩陣中所有n∗nn*nn∗n正方形中極差的最小值。 另一種做法 聽說這題可以用單調佇列去做,但是我寫了一個二維RMQRMQRMQ。 二維RMQRMQRMQ RMQRM
【洛谷1117_BZOJ4650】[NOI2016] 優秀的拆分(雜湊_字尾陣列_RMQ)
題目: 洛谷1117 分析: 定義把我校某兔姓神犇Tzz和他的妹子拆分,為“優秀的拆分” 隨便寫個雜湊就能有\(95\)分的好成績…… 我的\(95\)分做法比fei較chang奇葩,不想浪費時間的可以忽略解法一qwq 解法一: 用\(n\)個vector記錄對於每個點\(i\),哪些長度\(l
【洛谷 P2756】 飛行員配對方案問題(二分圖匹配,最大流)
題目連結 這不是裸的二分圖匹配嗎? 而且匈牙利演算法自帶記錄方案。。 但既然是網路流24題,那就用網路流來做吧。 具體就是從源點向左邊每個點連一條流量為1的邊,兩邊正常連邊,流量都是一,右邊所有點向匯點連一條流量為1的邊,然後跑\(Dinic\)就行了。 怎麼記錄方案?列舉左邊所有點連的所有邊,如果剩餘流量為
【洛谷1501】[國家集訓隊] Tree II(LCT維護懶惰標記)
點此看題面 大致題意: 有一棵初始邊權全為\(1\)的樹,四種操作:將兩點間路徑邊權都加上一個數,刪一條邊、加一條新邊,將兩點間路徑邊權都加上一個數,詢問兩點間路徑權值和。 序列版 這道題有一個序列版:【洛谷3373】【模板】線段樹 2。 看題目就知道是一道線段樹板子題。 這種題目移到樹上路徑中
【洛谷5113】Sabbat of the witch(毒瘤分塊)
點此看題面 大致題意: 給你一個序列,要你支援三種操作:區間賦值,區間求和,撤回之前任一區間賦值操作。 分塊 這道題應該是一道十分毒瘤的分塊題。 這道題要用到的演算法並不是很難,但是思維難度是真的高。 大致思路就是對於每一個塊維護一大堆資訊,各用一個棧儲存對每個塊的賦值操作,並開一個鄰接表來儲存
2018.12.30【國家集訓隊】【洛谷P1903】數顏色 / 維護佇列(帶修莫隊)
傳送門 解析: 這道題好像以前在BZOJ上做過。 但是因為BZOJ資料較水,所以被我複雜度不對的程式碼搞過去了。。 真正的排序策略應該是這樣的: 塊大小設定成 n
【洛谷 P5110】 塊速遞推(矩陣加速,分塊打表)
題目連結 掌握了分塊打表法了。原來以前一直想錯了。。。 塊的大小\(size=\sqrt n\),每隔\(size\)個數打一個表,還要在\(0\text{~}size-1\)每個數打一個表。 然後就可以做到\(O(1)\)查詢了。 比如要求\(A^{n}\),只需要算出\(biao[n/size]*pow