Technologieaustausch

Der 14. Lanqiao Cup Provincial Competition CB Gruppe G Frage [Substring-Abkürzung] Lösung (AC)

2024-07-06

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Allgemeine Vorstellung vom Thema

gegebene Zeichenfolge ssS,Charakter ein, ba, bA,B, frag string ssS Wie viele sind da drin? einA Anfang bbB Der abschließende Teilstring.

Ideen zur Problemlösung

20 Punkte

Verwenden Sie eine Doppelschleife, um den linken und rechten Endpunkt aufzuzählen und festzustellen, ob dies der Fall ist einA Anfang bbB Wenn die Zeichenfolge am Ende die Antwort ist, fügen Sie eine hinzu.

100 Punkte

Der Datenbereich ist groß und wir müssen die zeitliche Komplexität darin kontrollieren O ( n log ⁡ n ) O(nlog n)Ö(NsieheGN) Innerhalb.

Fayi

wir müssen alles finden einA Anfang bbB Ende der Zeichenfolge, dann können wir für jedes Zeichen bbB, Geh und sehe bbB Wie viele sind auf der linken Seite? einA, dann diese a … b Punkte bAB Es handelt sich um eine legale Zeichenfolge.Zählen Sie, wie viele Zeichen sich auf der linken Seite einer bestimmten Position befinden einA, wir können benutzenPräfixsummeDer Algorithmus bleibt erhalten.

Methode 2

Wir können für jeden die gesamte Zeichenfolge durchlaufen einA Wie viele Zeichen befinden sich rechts vom Zeichen? bbB, dann diese a … ba Punkte bAB Alle sind legale Zeichenfolgen.Zählen Sie Zeichen ab einer bestimmten Position bbB Die Nummer kann verwendet werdenSuffixsummeDer Algorithmus bleibt erhalten.

#include