好像\(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 比如現在我們比較去掉第三位的字串和去掉...