弱校聯萌十一大決戰之強力熱身 C.Censor (KMP變形 好題)
C. Censor
Time Limit: 2000ms
Memory Limit: 65536KB
frog is now a editor to censor so-called sensitive words (敏感詞).
She has a long text
p.
Her job is relatively simple -- just to find the first occurence of sensitive word
w
and remove it.
frog repeats over and over again. Help her do the tedious work.
Input
The input consists of multiple tests. For each test:
The first line contains
1
string w.
The second line contains
1
string p.
(1≤length
of w,p≤5⋅106,
w,p
consists of only lowercase letter)
Output
For each test, write 1 string which denotes the censored text.Sample Input
abc aaabcbc b bbb abc ab
Sample Output
a ab
題目連結:http://www.bnuoj.com/v3/contest_show.php?cid=6865#problem/C
題目大意:一個子串,一個母串,要求刪除母串中的子串,刪完剩餘部分合並繼續刪,直到母串中不存在子串為止,輸出此時的母串
題目分析:不要求合併的話直接kmp即可,現在刪完要合併,其實只要記錄每次刪完,指向子串的指標回溯到哪個位置即可
#include <cstdio>
#include <cstring>
int const MAX = 5e6 + 5;
char s1[MAX], s2[MAX], ans[MAX];
int next[MAX], pos[MAX];
int l1, l2, cnt;
void get_next()
{
int i = 0, j = -1;
next[0] = -1;
while(s2[i] != '\0')
{
if(j == -1 || s2[i] == s2[j])
{
i ++;
j ++;
if(s2[i] == s2[j])
next[i] = next[j];
else
next[i] = j;
}
else
j = next[j];
}
}
void KMP()
{
get_next();
int i = 0, j = 0;
cnt = 0;
while(s1[i] != '\0')
{
ans[cnt] = s1[i ++];
while(!(j == -1 || ans[cnt] == s2[j]))
j = next[j];
j ++;
cnt ++;
pos[cnt] = j;
if(j == l2)
{
cnt -= l2;
j = pos[cnt];
}
}
}
int main()
{
while(scanf("%s %s", s2, s1) != EOF)
{
l1 = strlen(s1);
l2 = strlen(s2);
KMP();
for(int i = 0; i < cnt; i++)
printf("%c", ans[i]);
printf("\n");
}
}
相關文章
- 2015弱校聯萌十一大決戰之背水一戰 D. Divide 二進位制思維題IDE
- 剪花布條(kmp基礎變形)KMP
- 海量之道之弱聯網優化優化
- 開源的悲哀——袁萌100天變身實錄[2]薦
- 開源的悲哀——袁萌100天變身實錄[3]薦
- go-zero微服務實戰系列(四、CRUD熱熱身)Go微服務
- [原創]乾貨 | 雲安全挑戰賽線上熱身賽冠軍戰隊解題分享
- POJ 2184 Cow Exhibition (01揹包變形 + 技巧 好題)
- 大氣熱力學(14)——強對流指數之三(熱力動力相結合的引數)
- 駭客經驗之sa弱口令強行入侵(轉)
- 如何解決員工執行力不強的問題
- go-zero微服務實戰系列(四、CRUD熱身)Go微服務
- KMP常見問題及解決方法【Z】KMP
- CES熱門初創一網打盡:Segway變身卡丁車,呆萌Loomo機器人,姿態識別駕駛,Love back機器人OOM機器人
- GOOGLE隱身力挺 暗戰手機百度薦Go
- 如何解決Macbook充電埠聯結器發熱問題?Mac
- 熱修復問題被拒解決(含蘋果聯絡方式)蘋果
- 變強——GitHub 熱點速覽 Vol.46Github
- R語言熱力地圖之漸變分析——西班牙開店選址R語言地圖
- 【Java】弱項強化筆記Java筆記
- 集合競價如何看強弱?
- 強力解決npm各種大姨媽NPM
- python3學習筆記之 強引用和弱引用Python筆記
- 演算法之KMP演算法KMP
- Hetao P1031 萌萌題 題解 [ 藍 ] [ 線性 dp ]
- win10wifi特別弱怎麼辦_win10wifi訊號變弱如何解決Win10WiFi
- 專題十六 KMP & 擴充套件KMP & Manacher【Kuangbin】KMP套件
- AI重回16世紀變身哥白尼!重新推導“日心說”,還將助力解決量子力學矛盾AI
- EOS超級節點之爭白熱化,Wancloud加入能否改變戰局?Cloud
- 用Kotlin畫起仿掌上英雄聯盟和懂球帝的自定義多邊形戰力圖Kotlin
- 變形金剛外傳《機械戰MacvsPC》Mac
- 知己知彼:駭客經驗之sa弱口令強行入侵(轉)
- 橫版萌世界!《彩虹聯萌》10.21刪檔技術測試開啟
- 強強聯合!北鯤雲與寶德就打造混合雲HPC解決方案達成戰略合作
- python seaborn畫熱力圖,自定義顏色漸變Python
- 攜手智慧家居設計翹楚 A.O.史密斯"好風‧好水‧好光"再迎強力外援
- 分眾無線MSN強強聯手 引發無線營銷新熱潮
- flutter系列之:flutter中的變形金剛TransformFlutterORM