薇爾莉特的打字機題解

2022-08-26 21:21:29 字數 803 閱讀 8769

好題(就是我死活想不到,看題解後卻不得不佩服思路巧妙的題);

我們將一種字串看做乙個點;

每一次操作就是對所有存在的點進行拓展

-->不按,狀態不變;

-->按下,狀態增加;

這就是先按a後按b的例子。

1.輸入乙個字母:

所有子樹中沒有此字母的點會增加,

所以我們用乙個陣列\(f[x]\)記載沒有此字母\(x\)的點數

之後,原來的所有點都有此字母了,新增的點一定沒有。

2.刪除:

因為每次打字都有可能不輸入進去,所以刪除增加的狀態只可能是,刪去所有操作的打字後,再刪去原來的字母。

狀態數和沒此字母的狀態都加1

#include#define ll long long

using namespace std;

const int n=5e6+7,mod=19260817;

int n,m;

char a[n],b[n];

ll t,ans=1,f[30];

inline int read()

while(ch>='0'&&ch<='9') t=(t<<3)+(t<<1)+(ch-48),ch=getchar();

return f*t;

}int main()

}printf("%lld\n",ans);

return 0;

}

題解 薇爾莉特的打字機

首先,這題需要處理字串,我們用 trie分析 先忽略刪除操作 拿樣例 1 舉個例子 首先把最開始的字串插入到樹中 然後薇爾莉特打了乙個字元 a 此時可以插入或者是不插入,就會有這樣的情況 不插入時,之前插入進去的字元均可以作為字串的結尾 假設之前插入了 x個字母,每乙個字母都可以作為串的結尾 現在插...

P4965 薇爾莉特的打字機

只要客人有意向,不論身在何處,都能上門服務。我是自動手記人偶服務 薇爾莉特 伊芙加登。薇爾莉特的打字機用了太久,按鍵已經開始老化了,因此有時候按鍵會沒有反應。而薇爾莉特總是盲打,因此按鍵沒反應她也不會注意到。一天,她用這台打字機繼續完成一封還沒寫完的信。現在告訴你這封信已經寫好的部分以及薇爾莉特想進...

洛谷4965 薇爾莉特的打字機(Trie,DP)

神仙題。考慮在一棵 trie 上進行染色,將可能出現的串的末尾染成黑色。答案就是黑點的個數。一開始只有 a 的末尾點是黑色。當出現乙個字元 不是退格 c 時,就要將每個黑點的 c 兒子都染成黑色。然而這樣乙個點可能會有重複染色,不能直接乘 2 不妨記錄乙個 f c 表示有兒子 c 且該兒子是黑色的點...