洛谷P5329 SNOI2019 字串

2022-05-05 19:36:11 字數 535 閱讀 1423

好像\(dfs o(n)\)暴力可以毫無壓力的輕鬆過,

當然你要寫\(\text\)也沒人攔你。

如果兩個字元相同我們可以發現是一樣的,於是用乙個\(a\)陣列把這個東西壓起來。

如果\(s_i > s_\) 那麼就刪除\(s_i\) ,

如果\(s_i < s_\) 那麼就刪除\(s_\)

然後一次\(dfs\)就解決了。

#include const int maxn = 1e6 + 10;      

int n, m, i, j, k, tot;

int a[maxn];

char s[maxn];

void dfs(int u)

dfs(p + 1);

for(int j = a[p];j < a[p + 1];j++)

printf("%d ",j);

} int main()

a[++tot] = n + 1;

dfs(1);

}

洛谷 P5329 SNOI2019 字串

暴力是過不了的,雜湊也不行。只能找規律。我們可以發現計刪除原串第i的字元後的新串為pi,則任意pi與pi 1 i include include include include using namespace std const int maxn 1000010 int a maxn int sum...

洛谷P5329 SNOI2019 字串

題目大意 給乙個長度為 n 的字串 s 字串 p i 為字串 s 去掉第 i 個字元後形成的字串。請給所有字串 p i 排序 相同字串按編號排序 題解 先去掉所有連續相同字元,因為它們形成的字串一定相同 也就是說只按編號排序 然後發現對於兩個字串 p i,p j i卡點 無 c code inclu...

題解 P5329 SNOI2019 字串

用棧的做法來水一發。首先我們有乙個暴力的做法,列舉每個被刪除的字元,然後排序輸出,時間複雜度 o n times n times logn 然後我們觀察一下資料,發現有乙個資料點且任意兩個相鄰字元 a i 與 a 不相等 那麼我們考慮這樣乙個字串 acdedc 比如現在我們比較去掉第三位的字串和去掉...