[λ°±μ€] 28018 μκ°μ΄ κ²ΉμΉ κΉ?(feat.imosλ²) (python νμ΄μ¬)
https://www.acmicpc.net/problem/28018
28018λ²: μκ°μ΄ κ²ΉμΉ κΉ?
λκΈμ λ¬μμ€ νμ μ $N$μ΄ μ£Όμ΄μ§λ€. $(1\leq N\leq 100\,000)$ λ€μ $N$κ° μ€μλ κ° νμμ μ’μ λ°°μ μκ° $S$μ μ’ λ£ μκ° $E$κ° μ£Όμ΄μ§λ€. $(1\leq S\leq E\leq 1\,000\,000)$ λ€μ μ€μλ νΉμ ν μκ°μ κ°μ
www.acmicpc.net
λνμμ ν΄κ²° λͺ»νκ³ λλκ³ ν΄κ²°ν λ¬Έμ . μ²μ λ£λ μκ³ λ¦¬μ¦μ΄μ΄μ μ κΈ°νλ€.(λμ ν© μκ³ λ¦¬μ¦ κ°λ€)
μμ§λ λͺ¨λ₯΄λκ² λ§μκ±° κ°λ€, λ°°μμλ λμ΄ μλ κ±° κ°λ€.
μμ΄λμ΄
λ¬Έμ λ₯Ό λ³΄κ³ μκ°μ νμ κ³ λ €νμ§μμΌλ©΄ μ λ§ μ¬μ΄ λμ΄λλ€. νμ§λ§ μ λ ₯κ°μ΄ ν¬κΈ° λλ¬Έμ μκ° κ³ λ―Όμ ν΄λ΄μΌ λλ€.
μ΄ μμ΄λμ΄λ₯Ό μ½κ² λ§νλ©΄, λ€μ΄μ€κ³ λκ°λ μκ°λ§ μ μ₯νλ©΄ λλ€.
λ¨Όμ μ΅λ μκ°(1000000) ν¬κΈ°μ 1μ°¨μ 리μ€νΈλ₯Ό μ μΈνκ³ κ°μ 0μΌλ‘ μ΄κΈ°νν΄ μ€λ€. κ·Έλ¦¬κ³ μ μ₯ μκ°, ν΄μ₯ μκ°μ λ§κ² +1μ ν΄μ€λ€.
μμ 1 κ°μ κ²½μ° λ€μκ³Ό κ°λ€.
in_time = [0, 1, 1, 0, 0,...]
out_time = [0, 0, 0, 1, 1,...]
μ΄λ κ² λ¦¬μ€νΈ λ κ°λ₯Ό λ§λ€μ΄μ£Όκ³ DP, μ νμμ μΈμμ£Όλ©΄ λλ€.
for i in range(1, 1000001):
D[i] = D[i - 1] + in_time[i] - out_time[i - 1]
λ¬Έμ 쑰건μμ "κ° μ’μμ μ¬μ©μ΄ μ’ λ£λλ μκ°μ κ³§λ°λ‘ μ νλ μ μλ€."λΌκ³ νμΌλ ν΄μ₯μκ°μ i - 1 μκ°μ λΉΌμ€λ€. μ΄λ κ² νλ©΄
D [n]μ nλ²μ§Έ μκ°μ μ νν μ μλ μ’μ μ(μ¬λ μλΌκ³ μκ°ν΄λ λ λ―)κ° λλ€.
μ κ·Έλ¦¬κ³ λλν λΆλ€μ μκ² μ§λ§ μ λ κ² λ¦¬μ€νΈ λ κ° μ¬μ© μ ν΄λ λλ€. out timeκ°λ€μ in_timeμ -1λ‘ μ μ₯νλ©΄ λλ€. μκ°μ λ§κ².
λλ λ©λͺ¨λ¦¬κ° λλν κ±° κ°μ λ΄ λ°©μμΌλ‘ μμ±νλ€.
μ 체 μ½λ
import sys
N = int(input())
in_time = [0] * 1000001
out_time = [0] * 1000001
D = [0] * 1000001
for _ in range(N):
a, b = map(int, sys.stdin.readline().split())
in_time[a] += 1
out_time[b] += 1
for i in range(1, 1000001):
D[i] = D[i - 1] + in_time[i] - out_time[i - 1]
Q = int(sys.stdin.readline().rstrip())
Qlist = [int(x) for x in sys.stdin.readline().split()]
for q in Qlist:
print(D[q])
μ½λ μ€λͺ
for _ in range(N):
a, b = map(int, sys.stdin.readline().split())
in_time[a] += 1
out_time[b] += 1
μμμ λ§ν κ²μ²λΌ μ μ₯, ν΄μ₯ κ°κ° λ°λ‘ λ°μμ€λ€.
for i in range(1, MAXTIME):
D[i] = D[i - 1] + in_time[i] - out_time[i - 1]
κ·Έλ¦¬κ³ μ νμμ μΈμμ€λ€. μ΄λ κ² (μ΄λ―Έ μλ μ¬λ + μ μ₯ν μ¬λλ€ - λκ° μ¬λλ€) κ°λ¨νκ² κ΅¬ν κ°λ₯νλ€.
μ§κΈ 보면 κ°λ¨ν μμ΄λμ΄μ§λ§, ν μ€νΈ κ°μ νκ²½μμλ ꡬννκΈ° μ½μ§ μλ€.
μ€νλ € κΈ°μ‘΄μ λ΄κ° μκ³ μλ λ°©λ²λ§ κ³ μ§νλ κ±° κ°λ€. μ... λ§μ μ°μ΅, 체ν κ·Έλ¦¬κ³ μ€μ κ²½νμ΄ λ΅μΈ κ±° κ°λ€.