Задача №1789. Зоопарк
Олимпиада завершена. Режим дорешивания.
Разбор добавил Александр Чистяков
Будем решать эту задачу методом динамического программирования: Пускай массив A[N] хранит количество животных каждого вида (входные данные), а в ячейке B[i][j] массива B[N][4] будем хранить количество способов выбрать j различных по виду животных среди видов с 0 по i(индексация везде с 0). Для любого i B[i][0] = 1. B[0][1] = A[0] (выбрать любого зверя нулевого вида) B[0][2] = B[0][3] = 0 (из одного вида животных невозможно выбрать двух разных) Для всех остальных ячеек B[i][j] значением будет являться сумма B[i-1][j] и B[i-1][j-1]*A[i] (мы можем либо не брать животных i-того вида вообще, либо взять одно из новых животных и j-1 старое). После заполнения всей матрицы B по этому правилу ответ будет находиться в ячейке B[N-1][3].
Сдать: для сдачи задач необходимо войти в систему
2917
statement