Кидання гральних костей#11753

Кидання гральних костей (Розбір)

Математичне сподівання однієї кості. Кость з гранями випадає кожною гранню 1, 2, ..., s з ймовірністю , тому її матсподівання дорівнює середньому арифметичному цих чисел:

E = \frac{1 + 2 + ... + s}{s} = \frac{1+s}{2}.

Матсподівання суми дорівнює сумі матсподівань, тому для очок Аліси і очок Боба

E[A] = \frac{(a_1 + 1)+ ... + (a_m + 1)}{2},~~~E[B] = \frac{(b_1 + 1) + ... + (b_n + 1)}{2}

Очки розподілені симетрично відносно матсподівання. На одній кості значення і , і s - 1 і так далі випадають з однаковою ймовірністю, тобто кость симетрична відносно (1 + s) / 2. Сума симетричних величин теж симетрична — відносно свого матсподівання.

Аліса виграє при E[A] > E[B], Боб виграє при E[A] < E[B]. Таким чином:

p_a > p_b ⇔ E[A] > E[B] ⇔ \\ a_1 + a_2 + ... + a_m + m > b_1 + b_2 + ... +b_n + n.

Для розв'язання задачі достатньо порівняти суми SA = \sum a_k + m та SB = \sum b_k + n.

Приклад

У Аліси вісім костей з гранями, а у Боба одна кость з гранями. Тоді SA = 8 \cdot 4 + 8 = 40 і SB = 6 + 1 = 7, так що SA > SB і відповідь ALICE.

Перевіримо це безпосередньо. Найменша сума, яку може набрати Аліса, дорівнює 8 \cdot 1 = 8, а найбільша сума Боба дорівнює . Тому Аліса виграє при будь-якому результаті кидків: p_a = 1, p_b = 0.

Розглянемо другий тест. У Аліси кості з і гранями, у Боба — з і гранями. Тоді SA = 6 + 4 + 2 = 12 і SB = 4 + 6 + 2 = 12, так що SA = SB і відповідь TIED.

Це видно і без обчислень: у Аліси і Боба однакові набори костей, відрізняється лише порядок їх запису. Тому їхні очки розподілені однаково, і p_a = p_b.

Реалізація алгоритму

Зчитуємо вхідні дані. Суму \sum a_k + m накопичуємо у змінній , а суму \sum b_k + n накопичуємо у змінній .

scanf("%d %d", &m, &n);
sA = m;  sB = n;
for (i = 0; i < m; i++)
{
  scanf("%d", &x);
  sA += x;
}

for (i = 0; i < n; i++)
{
  scanf("%d", &x);
  sB += x;
}

Порівнюємо суми і виводимо відповідь.

if (sA > sB)
  puts("ALICE");
else if (sA < sB)
  puts("BOB");
else
  puts("TIED");