暴力是過不了的,雜湊也不行。只能找規律。我們可以發現計刪除原串第i的字元後的新串為pi,則任意pi與pi+1(i#include
#include
#include
#include
using
namespace std;
const
int maxn =
1000010
;int a[maxn]
;int sum[maxn]
;int t =0;
char c[maxn]
;list<
int> li;
intmain()
li.insert
(li.
begin()
, t)
;for
(int i = t-
1;i>
0;i--
)int ans =0;
list<
int>
::iterator it;
for(it = li.
begin()
;it != li.
end(
);it++)}
cout << endl;
return0;
}關於部分**的說明:
li.
insert
(li.
begin()
, t)
;for
(int i = t-
1;i>
0;i--
)
這塊之所以這麼比較,是因為基於字典序和字首的思想,pi與pi+1字首[1, i-1]是相同的,第i位可以不同,如果pipi+1,且 pi-1pi+1,且 pi-1注:本**中p陣列已經進行了鄰項去重優化。 洛谷P5329 SNOI2019 字串
好像 dfs o n 暴力可以毫無壓力的輕鬆過,當然你要寫 text 也沒人攔你。如果兩個字元相同我們可以發現是一樣的,於是用乙個 a 陣列把這個東西壓起來。如果 s i s 那麼就刪除 s i 如果 s i s 那麼就刪除 s 然後一次 dfs 就解決了。include const int max...
洛谷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 比如現在我們比較去掉第三位的字串和去掉...