\documentclass[10pt]{article} \usepackage[utf8]{inputenc} \usepackage{amsmath,amsthm,amssymb} \usepackage{fullpage} \usepackage{url} \pagenumbering{gobble} \usepackage{hyperref} \title{ Tutorial: Análise de Dados} \author{Arthur Andrade D'Olival} \date{} \begin{document} \maketitle 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.\end{document}