提交时间:2024-01-21 19:00:53
运行 ID: 121442
#include<bits/stdc++.h> #define int long long using namespace std; namespace Trie{ int Trieidx = 0,Triet[3000005][65],Triecnt[3000005]; void TrieInit(){ for (int i = 0;i <= Trieidx + 3;i++){ for (int j = 0;j <= 63;j++){ Triet[i][j] = 0; } } for (int i = 0;i <= Trieidx + 3;i++){ Triecnt[i] = 0; } Trieidx = 0; } int TrieGetnum(char x){ if (x >= 'A' && x <= 'Z'){ return x - 'A' + 1; } else if (x >= 'a' && x <= 'z'){ return x - 'a' + 27; } else{ return x - '0' + 53; } } void TrieInsert(string s){ int a = 0,slen = s.size(); for (int i = 0;i < slen;i++){ int b = TrieGetnum(s[i]); if (Triet[a][b] == 0){ Trieidx++; Triet[a][b] = Trieidx; } a = Triet[a][b]; Triecnt[a]++; } } int TrieQuery(string s){ int a = 0,slen = s.size(); for (int i = 0;i < slen;i++){ int b = TrieGetnum(s[i]); if (Triet[a][b] == 0){ return 0; } a = Triet[a][b]; } return Triecnt[a]; } } using namespace Trie; void slove(){ TrieInit(); //int n,q; //cin>>n>>q; string s; while (cin>>s){ TrieInsert(s); } cout<<Trieidx + 1; return ; } signed main(){ int t = 1; while (t--){ slove(); } return 0; }