DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

신의 가호를 받은 블랙잭

문제로 돌아가기

해설

블랙잭 여부는 초기 두 장만으로 결정된다. 양쪽 중 적어도 한쪽이 블랙잭이면 규칙에 따라 즉시 000, 1.5R1.5R1.5R, −R-R−R 중 하나가 답이다.

이후 일반 게임에서는 보상을 RRR로 나누어 승리 +1+1+1, 무승부 000, 패배 −1-1−1로 정규화한다. 마지막에 얻은 기댓값에 RRR을 곱하면 된다.

현재 덱의 NNN장에 0,1,⋯ ,N−10,1,\cdots,N-10,1,⋯,N−1의 번호를 붙인다. jtw7913가 추가로 받은 카드 집합을 비트마스크 PPP, 딜러가 추가로 받은 카드 집합을 비트마스크 DDD라 하자. jtw7913의 차례에는 이고, jtw7913가 한 뒤에는 가 고정된 채 만 증가한다.

각 카드는 아직 덱에 남아 있거나, jtw7913가 받았거나, 딜러가 받은 세 상태 중 하나이다. 따라서 가능한 (P,D)(P,D)(P,D) 상태 수는 최대 3N3^N3N이다.

모든 비트마스크 MMM에 대해 다음 점수를 전처리한다.

  • playerScore[M]\mathrm{playerScore}[M]playerScore[M]: jtw7913의 초기 두 장과 MMM의 카드를 합친 점수.
  • dealerScore[M]\mathrm{dealerScore}[M]dealerScore[M]: 딜러의 초기 두 장과 MM의 카드를 합친 점수.

에이스를 모두 1점으로 계산한 합을 sss라 하자. 에이스가 하나 이상 있고 s+10≤21s+10\leq21s+10≤21이면 에이스 하나를 11점으로 바꾸어 s+10s+10s+10을 사용한다. 그렇지 않으면 sss를 사용한다.

G(P,D)G(P,D)G(P,D)를 jtw7913가 이미 Stay했고 추가 카드 집합이 PPP, 딜러의 추가 카드 집합이 DDD일 때 이후 결과의 정규화된 기댓값이라 하자. 딜러 점수가 21을 초과하면 G(P,D)=1G(P,D)=1G(P,D)=이다. 딜러 점수가 17 이상이거나 덱이 비었다면 두 사람의 점수를 비교하여 중 하나를 반환한다.

그 외에는 딜러가 반드시 Hit한다. 남은 카드 집합을 UUU라 하면

G(P,D)=1∣U∣∑i∈UG(P,D∪{i}).G(P,D)=\frac{1}{|U|}\sum_{i\in U}G(P,D\cup\{i\}).G(P,D)=∣U∣1​

메모이제이션 인덱스는 각 카드의 상태를 3진수 한 자리로 표현하여 만들 수 있다. 카드 iii가 덱에 남아 있으면 0, PPP에 있으면 1, DDD에 있으면 2를 사용한다. 이렇게 하면 길이 3N3^N3N의 배열 하나로 모든 딜러 상태를 저장할 수 있다.

이제 F(P)F(P)F(P)를 jtw7913가 추가 카드 집합 PPP를 가진 상태에서 최적으로 행동할 때의 최대 정규화 기댓값이라 하자. 지금 Stay하는 값은

S(P)=G(P,0)S(P)=G(P,0)S(P)=G(P,0)

이다.

현재 점수가 21이거나 덱이 비었다면 자동으로 Stay하므로 F(P)=S(P)F(P)=S(P)F(P)=S(P)이다. 그렇지 않으면 Hit도 선택할 수 있다. 남은 카드 집합을 UUU라 할 때

H(P)=1∣U∣∑i∈Uhi,H(P)=\frac{1}{|U|}\sum_{i\in U} h_i,H(P)=∣U∣1​i∈U

여기서 카드 iii를 뽑고 버스트하면 hi=−1h_i=-1hi​=−1, 그렇지 않으면 hi=F(P∪{i})h_i=F(P\cup\{i\})hi이다. 따라서

F(P)=max⁡(S(P),H(P)).F(P)=\max(S(P),H(P)).F(P)=max(S(P),H(P)).

일반 게임의 답은 F(0)⋅RF(0)\cdot RF(0)⋅R이다.

점수 전처리는 O(N2N)O(N2^N)O(N2N)이고, 딜러 상태는 최대 3N3^N3N개이며 각 상태에서 최대 NNN장을 순회한다. 따라서 시간 복잡도는 O(N3N)O(N3^N), 공간 복잡도는 이다.

Solution written by GPT5.6

D=0D=0
D=0
Stay
PPP
DDD
M
1
1,0,−11,0,-11,0,−1
i∈U
∑
​
G
(
P
,
D
∪
{i}).
∑
​
hi​
,
​
=
F(P∪
{i})
O(N3N)
O(3N)O(3^N)O(3N)