ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algo RhythmπŸ•ΊπŸ’ƒ]BOJ 13458 - μ‹œν—˜κ°λ…
    Algo RhythmπŸ•ΊπŸ’ƒ/BOJ 2021. 3. 9. 16:53

    문제 뢄석

    μ‹œν—˜μž₯의 개수λ₯Ό N(1 ≤ N ≤ 1,000,000), i번째 μ‹œν—˜μž₯에 μžˆλŠ” μ‘μ‹œμžμ˜ 수λ₯Ό Ai(1 ≤ Ai ≤ 1,000,000) , 총감독관과 뢀감독관이 ν•œ μ‹œν—˜μž₯μ—μ„œ κ°μ‹œν•  수 μžˆλŠ” μ‘μ‹œμžμ˜ 수λ₯Ό 각각 B, C(1 ≤ B, C ≤ 1,000,000)라고 ν•˜μž.

    그리고 i번째 μ‹œν—˜μž₯에 λ“€μ–΄κ°€μ•Ό ν•˜λŠ” 총감독관과 λΆ€κ°λ…κ΄€μ˜ 수λ₯Ό 각각 $n\_main_i$, $n\_sub_i$라고 ν•˜μž.

     

    총감독관은 각 μ‹œν—˜μž₯에 무쑰건 ν•œ λͺ… λ“€μ–΄κ°€μ•Ό ν•˜κ³  뢀감독관은 μ—†κ±°λ‚˜ μ—¬λŸ¬ λͺ… μžˆμ–΄λ„ λœλ‹€. λ”°λΌμ„œ i번째 μ‹œν—˜μž₯μ—μ„œ ν•„μš”ν•œ 감독관 수의 μ΅œμ†Ÿκ°’μ€ μ•„λž˜ 뢀등식을 λ§Œμ‘±ν•˜λŠ” κ°€μž₯ μž‘μ€ $n\_sub_i$λ₯Ό κ΅¬ν•˜λŠ” 것과 κ°™λ‹€.

    $B\ +\ C \times n\_sub_i\ \ge A_i$

     

    이λ₯Ό 톡해 μš°λ¦¬κ°€ μ΅œμ’…μ μœΌλ‘œ ꡬ해야 ν•˜λŠ” 닡은 μ•„λž˜μ™€ κ°™λ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€. (μ΄μœ λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ μˆ˜μ‹μ΄ μ΄μƒν•˜κ²Œ λ‚˜μ˜΅λ‹ˆλ‹€. μ •ν™•ν•œ μˆ˜μ‹μ€ μ•„λž˜ μ›λ³Έλ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ„Έμš”!)

    $ans\ = \sum_{i=1}^N\ n\sub_i$ + $\sum{i=1}^N\ n\_main_i$

     

    문제 풀이

    문제 λΆ„μ„μ—μ„œ λ„μΆœν•œ 뢀등식을 μ΄ν•­ν•˜λ©΄ μ•„λž˜μ™€ κ°™λ‹€.

    $n\_sub_i\ \ge\ (A_i\ -\ B)\ /\ C$

     

    이 뢀등식을 λ§Œμ‘±ν•˜λŠ” κ°€μž₯ μž‘μ€ $n\_sub_i$λ₯Ό κ΅¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” $(A_i\ - \ B)$와 $C$의 관계에 λŒ€ν•΄ 생각할 ν•„μš”κ°€ μžˆλ‹€. $(A_i\ - \ B)$λŠ” i번째 μ‹œν—˜μž₯μ—μ„œ 총감독관이 κ°λ…ν•˜λŠ” μ‘μ‹œμžμ˜ 수λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ μ‘μ‹œμžλ“€μ˜ 수 즉, 뢀감독관이 감독해야 ν•˜λŠ” μ‘μ‹œμžλ“€μ˜ 수λ₯Ό μ˜λ―Έν•œλ‹€.

     

    μ§κ΄€μ μœΌλ‘œ μƒκ°ν• λ•Œ λΆ€κ°λ…κ΄€μ˜ μˆ˜λŠ” $(A_i\ - \ B)\ /\ C$ μž„μ„ μ•Œ 수 μžˆλ‹€. ν•˜μ§€λ§Œ 잘 생각해보면 뢀감독관이 감독해야 ν•˜λŠ” μ‘μ‹œμžλ“€μ˜ μˆ˜μ™€ λΆ€κ°λ…κ΄€μ˜ μˆ˜κ°€ λ‚˜λˆ„μ–΄ 떨어지지 μ•ŠλŠ” κ²½μš°λ„ μžˆλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€. 그런 κ²½μš°μ— λΆ€κ°λ…κ΄€μ˜ μˆ˜λŠ” $(A_i\ - \ B)\ /\ C + 1$이닀. 이λ₯Ό psuedo code둜 ν‘œν˜„ν•˜λ©΄ μ•„λž˜μ™€ κ°™λ‹€.

     

    $if\ (A_i\ -\ B)\,\bmod\,C\ \ne\ 0,\ n\_sub_i\ =\ (A_i\ -\ B)\ /\ C\ + 1$

    $else,\ n\_sub_i\ = (A_i - B)\ /\ C$

     

    μ΄λ•Œ 두 가지 μ˜ˆμ™Έμƒν™©μ΄ μžˆλ‹€. λ¨Όμ € $A_i - B = 0$인 경우 즉, 총감독관 1λͺ…λ§ŒμœΌλ‘œ μ‹œν—˜μžλ“€μ„ λͺ¨λ‘ 감독할 수 μžˆλŠ” κ²½μš°μ΄λ‹€. μ΄λ•Œ $n\_sub_i = 0$이닀.

    λ‘λ²ˆμ§ΈλŠ” $A_i - B < 0$인 경우 즉, i번째 μ‹œν—˜μž₯의 μ‘μ‹œμž μˆ˜κ°€ 총감독관이 감독할 수 μžˆλŠ” 인원보닀 적은 κ²½μš°μ΄λ‹€. μ΄λ•Œλ„ λ§ˆμ°¬κ°€μ§€λ‘œ $n\_sub_i = 0$이닀.

     

    1λ²ˆμ§ΈλΆ€ν„° n번째 μ‹œν—˜μž₯κΉŒμ§€ μˆœνšŒν•˜λ©° $n\_sub$λ“€μ˜ 합을 κ΅¬ν•˜κ³  이λ₯Ό $n\_main$의 ν•©κ³Ό λ”ν•˜λ©΄ ν•„μš”ν•œ κ°λ…κ΄€μ˜ μ΅œμ†Ÿκ°’μ„ ꡬ할 수 μžˆλ‹€.

     

    λ³΅μž‘λ„ 뢄석

    μ‹œν—˜μž₯의 개수λ₯Ό N이라고 ν• λ•Œ μ‹œκ°„λ³΅μž‘λ„μ™€ κ³΅κ°„λ³΅μž‘λ„λŠ” μ•„λž˜μ™€ κ°™λ‹€.

     

    μ‹œκ°„ λ³΅μž‘λ„ : $O(N)$ - 각 μ‹œν—˜μž₯을 μˆœνšŒν•˜λ©° $\sum_{i=1}^N\ n\_sub_i$을 κ΅¬ν•˜κΈ° λ•Œλ¬Έμ—

    곡간 λ³΅μž‘λ„ : $O(N)$ - n개의 μ‹œν—˜μž₯의 μ‘μ‹œμžμˆ˜λ₯Ό λͺ¨λ‘ 벑터에 μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ—

     

    μ½”λ“œ

     

    문제 좜처 및 μ›λ³Έλ¬Έμ„œ

    www.acmicpc.net/problem/13458

     

    13458번: μ‹œν—˜ 감독

    첫째 쀄에 μ‹œν—˜μž₯의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진닀. λ‘˜μ§Έ μ€„μ—λŠ” 각 μ‹œν—˜μž₯에 μžˆλŠ” μ‘μ‹œμžμ˜ 수 Ai (1 ≤ Ai ≤ 1,000,000)κ°€ 주어진닀. μ…‹μ§Έ μ€„μ—λŠ” B와 Cκ°€ 주어진닀. (1 ≤ B, C ≤ 1,000,000)

    www.acmicpc.net

    www.notion.so/BOJ-13458-32f0acec8416417cb00d2a0a387a36cb

     

    BOJ 13458 - μ‹œν—˜κ°λ…

    문제 뢄석

    www.notion.so

    λŒ“κΈ€

Designed by Tistory.