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

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

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

루미의 스트레스 해소하기

문제로 돌아가기

해설

  • DP 문제입니다. dp[t][s]dp[t][s]dp[t][s]를 ttt분이 지났고 체력을 sss 이하로 썼을 때 스트레스의 최솟값으로 둡니다.
  • 처음에는 취미를 하나도 하지 않은 경우로 채웁니다: dp[t][s]=A+tFdp[t][s] = A + tFdp[t][s]=A+tF.
  • ttt, sss를 111부터 늘려 가며, 각 취미(해소량 LLL, 소모 시간 HHH, 체력 소모량 MMM)에 대해 갱신합니다.
    • t≥H이고 이면 취미를 시작할 때의 체력은 이고, 이 값으로 를 구합니다.
dp[t][s]=max⁡(0, min⁡(dp[t][s], dp[t][s−1], dp[t−1][s]+F, dp[t−H][s−M]−Leff))dp[t][s] = \max(0,\ \min(dp[t][s],\ dp[t][s-1],\ dp[t-1][s] + F,\ dp[t-H][s-M] - L_{eff}))dp[t][s]=max(
  • 그 취미를 할 수 없으면 마지막 항만 빼고 갱신합니다.
dp[t][s]=max⁡(0, min⁡(dp[t][s], dp[t][s−1], dp[t−1][s]+F))dp[t][s] = \max(0,\ \min(dp[t][s],\ dp[t][s-1],\ dp[t-1][s] + F))dp[t][s]=max(0, min(dp[t][s
  • 같은 취미를 여러 번 할 수 있으므로 dp[t−H][s−M]dp[t-H][s-M]dp[t−H][s−M]은 같은 표의 값을 그대로 씁니다.
  • 답은 dp[B][C]dp[B][C]dp[B][C]입니다.
  • 주의할 점
    • 취미를 즐기지 않는 동안에는 11분마다 스트레스가 씩 오릅니다.
t \ge H
t≥H
s≥Ms \ge Ms≥M
C−(s−M)C - (s - M)C−(s−M)
LeffL_{eff}Leff​
0
,
 
min
(
d
p
[
t
]
[
s
]
,
 
d
p
[
t
]
[
s
−
1], dp[t−
1][s]+
F, dp[t−
H][s−
M]−
Leff​))
]
,
 
d
p
[
t
]
[
s
−
1], dp[t−
1][s]+
F))
1
FFF
  • E>100E > 100E>100이면 LeffL_{eff}Leff​가 음수가 됩니다. 음수를 양수로 나눈 결과는 언어마다 다르니 주의합시다. 지문의 LeffL_{eff}Leff​는 내림입니다.
  • 스트레스의 최솟값은 000입니다.
  • 시간복잡도는 O(NBC)\mathcal{O}(NBC)O(NBC), 공간복잡도는 O(BC)\mathcal{O}(BC)O(BC)입니다.