====== Scored Nim ====== ===== 풀이 ===== * 1개짜리 힙을 만들면, 그 힙의 색깔은 이후에 변하지 않는 확정적인 점수가 된다. * n개짜리 힙 한개를 분할하기 시작하면, 어떤 식으로 분할하든 n-1턴 이후에 모든 분할이 끝난다. 자기턴에 확정점수를 최대 1점 만들수 있다. x개 힙을 1개 힙과 x-1개 힙으로 나누면 된다. 이것이 최적 행동이다. * 둘다 최적전략을 쓰면, 짝수개짜리 힙은 선후공이 똑같이 나눠갖게 되고, 홀수개짜리 힙은 선공이 1점 더 많이 갖게 된다. * 힙이 여러개라면, +1점을 얻을수 있는 홀수개짜리 힙이 짝수개라면, 선후공이 똑같은 갯수마다 +1을 받으므로 총점은 똑같이 나눠갖는다. 홀수개짜리 힙이 홀수개라면, 선공이 최종적으로 1점을 더 얻는다 * 좀더 일반화하면, 모든 힙의 돌의 합이 홀수라면 선공이 1점더 얻고, 짝수면 비긴다. 선공의 점수는 ceil(sum(a_i)/2) 이다 ===== 코드 ===== """Solution code for "BOJ 18540. Scored Nim". - Problem link: https://www.acmicpc.net/problem/18540 - Solution link: http://www.teferi.net/ps/problems/boj/18540 Tags: [game theory] """ def main(): n = int(input()) # pylint: disable=unused-variable a = [int(x) for x in input().split()] print((sum(a) + 1) // 2) if __name__ == '__main__': main() {{tag>BOJ ps:problems:boj:골드_1}}