bzoj 4104 解密運算 思路

2022-05-12 10:09:43 字數 1001 閱讀 2524

題目:

一開始發現了給出的順序是按這些末尾字元後面的字尾排序得到的;

然後發現可以乙個乙個把字串補全;

因為首先知道所有單個字元,排序後就是那些串的第一位,和末尾連起來,得到 n+1 個二元組;

然後把這 n+1 個二元組排序,再和末尾連起來,得到 n+1 個三元組;

以此類推,最後可以得到整個串,可惜這樣做是 n^2 的,空間也是;

考慮倍增?因為這樣得到的四元組的前兩個位置其實和當初得到的二元組一樣...

而且這個過程和字尾陣列的排序也很像啊!二元組是第二關鍵字,再加乙個二元組是第一關鍵字...

然後想了一晚上也沒想明白怎麼倍增;

實際上,我又忘了字尾排序的另一種方法——(首字元相同的)去掉首字元,看後面字尾的排序;

這道題——給出的末尾字元是首字元的話,那麼它們已經按去掉首字元的字尾後排好序了;

所以把每行的字元以字元大小為第一關鍵字,行數為第二關鍵字排序,就知道在原串中這些首字元對應的字尾的排名了;

而這些行也是按字典序排序的;

所以知道了每一行末尾字元是哪一行的開頭;

於是從 「.」 開始,按排名對應回每一行,就倒著得到了原串!

在我原來的想法中,問題在於相同的字元作為開頭,無法知道誰對應哪個末尾;

而如果利用行的排名,相同字元之間的排名也明確了,就不需要每次再排序來確定對應的末尾字元;

字尾排序的那個方法(去掉首字元)...真常用啊...

**如下:

#include#include

#include

#include

using

namespace

std;

intconst xn=2e5+5

;int

n,m,rk[xn],s[xn],ans[xn];

struct np[xn];

bool cmp(n x,n y)

bool cmp2(n x,n y)

intmain()

SRE Google運維解密 心得

在乙個執行的系統中,出現風險是不可能避免的,而運維工程師的存著便是控制並解決風險。書中提到構建百分百可靠的服務是不可取的,因為乙個服務面向使用者的不止是可靠,還有創新。當可靠性達到一定的數量級後,再花費大量的成本在可靠性上而忽略服務的創新,這種方式得不償失。書中還提到可用性為多少個 9 這個概念 上...

讀SRE Google運維解密有感 二

這是讀 sre google運維解密 有感第二篇,第一篇參見 這本書最近又讀了幾章,結合自己的經歷,有些地方真的能感同身受,有些地方也驚嘆sre充滿辯證的思想,總之sre是好一本好書,會給你很大的啟發。本書主要是講通過sre思想進行運維體系的構建,除了技術層面以外,我更關注sre內在充滿辯證的思想。...

解密騰訊SNG雲運維平台「織雲」

infoq 織雲定位為內部的自動化運維平台,那麼它具備那些特徵呢?梁定安 織雲平台定義了sng業務的標準化運營規範,在平台中運維人員抽象出上層的管理節點,減少與統一運維物件,降低海量運維的複雜度,得益於運營環境的標準化建設,有更多通用的自動化工具被設計開發,配合流程引擎的驅動,使我們逐步邁入自動化的...