chore: build all pdfs
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
O problema pode ser resolvido por meio de uma abordagem de \textbf{programação dinâmica}, onde calculamos o número de sequências válidas de lançamentos de dados até cada posição, levando em consideração qual foi a última face sorteada e quantas vezes ela apareceu consecutivamente.
|
||||
|
||||
A principal restrição é que cada face \( i \) (\(1 \le i \le 6\)) só pode aparecer no máximo \( d_i \) vezes seguidas. Assim, ao adicionar um novo lançamento à sequência, precisamos garantir que essa condição nunca seja violada.
|
||||
|
||||
Definimos a seguinte estrutura de DP:
|
||||
|
||||
\[
|
||||
dp[i][j] = \text{número de sequências válidas de comprimento } i \text{ cuja última face lançada é } j
|
||||
\]
|
||||
|
||||
Para lidar com o número de repetições consecutivas, expandimos a ideia considerando blocos consecutivos de uma mesma face.
|
||||
Para cada face \( k \), podemos adicioná-la de \(1\) até \(d_k\) vezes, desde que a sequência anterior termine com uma face diferente de \(k\).
|
||||
|
||||
Assim, a função de transição é dada por:
|
||||
\[
|
||||
dp[i][k] = \sum_{j \ne k} \sum_{x = 1}^{\min(d_k, i)} dp[i - x][j]
|
||||
\]
|
||||
onde o termo \(dp[i - x][j]\) representa o número de sequências de comprimento \(i - x\) que terminam com uma face diferente de \(k\), às quais adicionamos \(x\) ocorrências consecutivas da face \(k\).
|
||||
|
||||
As condições iniciais são:
|
||||
\[
|
||||
dp[0][j] = 1, \quad \forall j \in \{1, 2, 3, 4, 5, 6\}
|
||||
\]
|
||||
representando a sequência vazia inicial, que serve como base para as transições.
|
||||
|
||||
A resposta final será a soma de todas as formas possíveis de terminar a sequência de comprimento \(n\):
|
||||
\[
|
||||
\sum_{j=1}^{6} dp[n][j] \bmod (10^9 + 7)
|
||||
\]
|
||||
|
||||
A complexidade temporal dessa solução é \(O(n \times 6 \times \text{max}(d_i))\), pois para cada posição e cada face consideramos até \(d_i\) possíveis comprimentos de repetições.
|
||||
Reference in New Issue
Block a user