暴力のアイデア:
トライに挿入暴力、出力端の辞書式順序をサブストリング列挙値が1よりも大きいです
時間の複雑さ:N- 3。
結果:TLE 0ポイント
。。。非常に厄介な少し左
サフィックスだけ、統計の合計の出力値を列挙することができ、観察後:アイデアの正ソリューション
コード
`` `CPP
#include <ビット/ STDC ++。H>
名前空間stdを使用。
const int型MAXN = 1E7;
int型nは、CNT;
文字列SS。
構造体ノード{
int型の合計値、終了、息子[2]。
} [MAXN]ソート。
空のインサート(文字列s)
{
int型は今= 0、X;
以下のために(INT i = 0; i)は(s.lengthを<; iは++します){
X =トライ[今] .son [S [I] - '0']。
もし(x == 0){
X =トライ[今] .son [S [I] - '0'] = ++ CNT。
}
トライ[X] .SUM ++。
今= xと;
}
}
空のビルド()
{
以下のために(INT i = 0; iがn <; iは++){
挿入(ss.substr(I、NI));
}
}
空のクエリ(今INT)
{
IF(トライ[今] .SUM> 1){
coutの<<トライ[今] .SUM <<てendl;
}
IF(トライ[今] .son [0]){
クエリ(トライ[今] .son [0])。
}
IF(トライ[今] .son [1]){
クエリ(トライ[今] .son [1])。
}
}
メインint型()
{
// freopenは(STDIN、 "R"、 "です。");
// freopenは(、 "W"、stdoutを "アウト。");
CIN >> N >> SS。
ビルド();
クエリ(0);
0を返します。
}
`` `
これは、正の解SAを聞いています
しかし、私は、あまりにも弱い死ぬことはありません