BOJ 16679 - Back to the Bones

완전히 잘못 접근해서 꼬인 문제이다.
정해는 다음과 같다.
항상 주사위들 중, ai>aj 라면 j 번째 주사위를 돌리는 것이 최적이다.
따라서 오름차순으로 정렬햇을 때 prefix만 돌려야하는 주사위가 된다.
dp[i][k]= i 개의 주사위를 돌렸을 때 총 합이 k가 나오는 경우의 수 라고 두고
dp[0][0]=0, dp[i][k]=d=1∑6dp[i−1][k−d]
가 된다.
이제 0∼N개의 주사위를 돌리고 그 뒤는 가만히 냅두는 모든 경우를 검사한다.
x 개의 주사위를 돌렸다면 나머지 N−x 개의 주사위의 합이 S라 할 때, 우리가 구하려는 6N을 곱한 값은 f(x)=s=Max(0,k−S)∑6Ndp[x][s]⋅(6x1⋅6N)
이고 가장 f(x)가 큰 x가 주사위를 몇개 돌릴지에 대한 정답이다.
작은것부터 x개를 채워주면 된다.
Comments