Link: https://ac.nowcoder.com/acm/contest/3947/I
Fonte: Niuke.com
Prazo: C / C ++ 1 segundo, 2 segundos línguas outras
restrições de espaço: C / C ++ 131072K, outras línguas 262144K
64 bits do IO do Formato: LLD%
restrições de espaço: C / C ++ 131072K, outras línguas 262144K
64 bits do IO do Formato: LLD%
Descrição do título
Neste momento, não nos conhecemos e estamos dispostos a passar meses e meses.Quantas vezes de amor uma carta de amor contém?
Eu amo você, não apenas pelo que você é, mas pelo que sou quando estou com você.
Digite a descrição:
Uma linha: uma carta de amor de vários caracteres (sem distinção entre maiúsculas e minúsculas).
A carta de amor não excederá 684.594 caracteres (maiúsculas e minúsculas).
Descrição da saída:
Uma linha: contém um número inteiro, ou seja, o número de vezes que ilovey aparece como uma subsequência em uma carta de amor.
Como a resposta pode ser grande, envie o valor após o módulo 20010905.
Entrada
IloveyouNão só para o que você está, mas quando estou com você
Saída
2864
A explicação se refere a um blog que eu escrevi antes: https://www.cnblogs.com/jiamian/p/12210899.html
1 #include <bits / stdc ++. H> 2 typedef long long LL; 3 const int INF = 0x3f3f3f3f ; 4 const duplo eps = 1-8 ; 5 const int mod = 1e8; 6 const int maxn = 2e5 + 10 ; 7 usando o namespace std; 8 const int MOD = 20010905 ; 9 10 cadeia Str1; 11 string str2 = "iloveyou " ; 12 LL dp [ 10 ]; 13 14 int main () 15 { 16 #ifdef DEBUG 17 freopen ( " sample.txt " , " r " , stdin); 18 #endif 19 20 while (cin >> str1) 21 { 22 memset (dp, 0 , sizeof (dp)); 23 para ( int i = 0 ; i <str1.size (); i ++ ) 24 { 25 str1 [i] = tolower (str1 [i]); 26 for ( int j = str2.size () - 1 ; j> = 0 ; j-- ) 27 dp [j] = (dp [j] + (str1 [i] == str2 [j]) * (j == 0 ? 1 : dp [j- 1 ]))% MOD; 28 } 29 cout << dp [str2.size () - 1 ] << endl ;; 30 } 31 32 retorno 0 ; 33 }
-