고전 DP 문제
시간 제한2초메모리 제한1024 MB
행마다 왼쪽에서 a_i칸이 남은 격자에서 모든 칸을 룩이 덮도록 놓는 최소 개수와 그 배치 수를 998244353으로 나눈 나머지로 구합니다.
문제
n행 n열의 격자가 있다. 아르보크는 위에서 i번째 행에 왼쪽부터 칸만 남도록 격자의 일부를 잘라냈다. 모든 에 대해 이므로 격자는 영 다이어그램 모양이다. 아르보크는 남은 칸 중 일부에 룩을 놓으려 한다.
룩은 칸 하나를 차지하고, 비어 있는 칸을 몇 칸이든 지나 가로 또는 세로로 움직일 수 있는 기물이다.
칸에 룩이 놓여 있거나, 룩이 한 번의 이동으로 그 칸에 갈 수 있으면 그 칸은 덮인 칸이다.
남은 모든 칸이 덮이도록 놓는 룩의 최소 개수 과, 같은 조건을 만족하도록 룩을 개 놓는 방법의 수 를 구하라. 는 998244353으로 나눈 나머지이다.
입력
첫 줄에 격자의 크기 ()이 주어진다.
둘째 줄에는 아르보크가 남긴 각 행의 너비 ()이 주어진다.
출력
정수 과 를 출력한다. 은 남은 모든 칸을 덮는 데 필요한 룩의 최소 개수이고, 는 개의 룩으로 같은 결과를 얻는 배치의 수를 998244353으로 나눈 나머지이다.
힌트
첫 번째 예제에서는 룩이 한 개면 모든 칸을 덮을 수 없지만 두 개면 충분하다. 모든 칸을 덮는 두 개의 룩 배치는 여섯 가지이다 (R은 룩, *은 빈 칸을 뜻한다).
R * * * * *
** R* R* R* *R **
*R* R** *R* **R R** RR*