본문 바로가기

분류 전체보기

(145)
백준 32583 - Watchdogs (C++) 문제 문제 링크 BOJ 32583 - Watchdogs 문제 요약 $N$개의 도시로 이루어진 마을 코코르코프 속에서 $K$마리의 쥐가 이동한다. 구체적으로 $K$개의 도시쌍 $(A, B)$가 주어질 때 다음을 만족하는 도시 $C$ 중 적어도 한 곳에 고양이를 배치하려고 한다. $|d(C, A)−d(C, B)| ≤ 1$ 도시 $C$는 $A$와 $B$ 사이의 경로에 포함된다. 한 고양이는 여러 마리의 쥐를 처리할 수 있으며 처음 배치된 자리에 머무를 때, $K$마리의 쥐를 감시하기 위해 최소 몇 마리의 고양이를 배치해야 할지 구해보자. 제한 TL : $5$ sec, ML : $1024$ MB $2 ≤ ..
백준 32294 - 수열과 개구리 (C++) 문제 문제 링크 BOJ 32294 - 수열과 개구리 문제 요약 길이 $n$의 수열 $a, b$가 주어진다. 이때, 수열 위 개구리가 다음 규칙에 따라 행동한다. 개구리의 현재 위치를 $x(1 ≤ x ≤ n)$라고 할 때, $b_x$초 이후 $x - a_x$ 또는 $x + a_x$로 이동한다. 개구리의 위치 $x$에 대해 개구리가 수열 밖에 도달하는 최초의 시각을 $f(x)$라고 정의할 때, $f(1), f(2), ... , f(n)$의 값을 모두 구해보자. 제한 TL : $2$ sec, ML : $1024$ MB $1 ≤ n ≤ 2 \times 10^5$ $1 ≤ a_i ≤ n$ $1 ≤ b_i ≤ ..
백준 31222 - 수열과 어렵지 않은 쿼리 (C++) 문제 문제 링크 BOJ 31222 - 수열과 어렵지 않은 쿼리 문제 요약 길이 $n$의 수열 $A_1, A_2, ... , A_n$에 대해 임의의 연속 부분 수열 $[a_l, a_{l+1}, ... , a_{r-1}, a_r]$에서 모든 원소가 서로 일치할 때, 이러한 구간 $[l, r]$을 '연속 일치 구간'이라고 한다. 또한 임의의 연속 일치 구간이 수열의 다른 연속 일치 구간에도 완전히 포함되지 않는다면 이를 '중요한 연속 일치 구간'이라고 한다. 이때, 아래 쿼리를 수행하는 프로그램을 작성하자. $1$ $i$ $x$ : $A_i$의 값을 $x$로 변경한다. $(1 ≤ i, x ≤ n)$ $2$ $l$ $r$ : $[l, r]$에서 서로 다른 중..
백준 32143 - 카드 게임 (Hard) (C++) 문제 문제 링크 BOJ 32143 - 카드 게임 (Hard) 문제 요약 $N$개의 공격 카드 $D_1, D_2, ... , D_N$에 대해 $Q$번에 걸쳐 추가 공격 카드가 주어진다. 쿼리마다 공격 카드를 최대한 적게 사용해 $H$를 $0$ 이하로 줄이려할 때, 목표를 달성하기 위한 가능성을 판별하라. 제한 TL : $1$ sec, ML : $1024$ MB $1 ≤ N, Q ≤ 3 \times 10^5$ $1 ≤ H, D_i, x ≤ 10^9$ 알고리즘 분류 자료 구조 (Data Structures) 그리디 알고리즘 (Greedy) 우선순위 큐 (Priority Queue) 풀이 ..
백준 27728 - 개구리와 쿼리 (C++) 문제 문제 링크 BOJ 27728 - 개구리와 쿼리 문제 요약 $N \times N$ 크기의 $2$차원 배열에 대해 아래와 같은 $Q$개의 쿼리가 주어진다. 각 쿼리의 답을 출력하자. $S_x$ $S_y$ $L$ : 개구리의 초기 위치가 $\left(S_{x},S_{y}\right)$ 이고 최대 한번 $L$ 이상의 양의 정수 값 $T$만큼 점프할 수 있을 때 육지에 도달하는 데 걸리는 최단 시간을 출력하라. 제한 TL : $1$ sec, ML : $128$ MB $3 ≤ N ≤ 500$ $1 ≤ Q ≤ 200,000$ $0 ≤ A_{ij} ≤ 10,000$ 알고리즘 분류 다이나믹 프로그래밍(dp) 누적 합(prefix_sum) 풀이 쿼리에 대해 나이브하게 답한다고 생각해보자. 그럼 단순히 $O(N^2Q)..
백준 30976 - 사랑의 큐피드 (C++) 문제 문제 링크 BOJ 30976 - 사랑의 큐피드 문제 요약 $N$명의 여학생과 $M$명의 남학생에 대한 키 정보가 주어진다. 각 학생에 대한 선호 기준이 주어질 때, 성립될 수 있는 커플의 최대 수를 구해보자. 제한 TL : $1$ sec, ML : $512$ MB $1 ≤ N, M ≤ 400$ $1 ≤ G_i, B_i, L_i, U_i ≤ 300$ 한 학생이 둘 이상의 커플에 속할 수 없다. 알고리즘 분류 이분 매칭 (bipartite_matching) 풀이 여학생 집합과 남학생 집합은 서로 독립적이며, 간선은 서로 다른 집합에 대해서만 향할 수 있다. 즉, 문제의 조건대로 두 집합을 그래프로 모델링할 시 이 그래프는 반드시 이분 그래프의 형태를 띈다. 또한, $N, M ≤ 400$ 이고 최대 매칭..
백준 30975 - 약간 모자라지만 착한 친구야 (C++) 문제 문제 링크 BOJ 30975 - 약간 모자라지만 착한 친구야 문제 요약 경상국립대와 그 주변에 있는 동네 $N$개를 잇는 $M$개의 도로 정보가 주어진다. 동네별 $P_i$에 유의한 채, 경상국립대에서 시작해 모든 동네를 한 번씩 방문한 뒤 돌아오는 최소 시간을 구해보자. 제한 TL : $1$ sec, ML : $512$ MB $1 ≤ P_i ≤ N ≤ 14$ $1 ≤ M ≤ 200$ $1 ≤ w_i ≤ 100$ 시작 지점과 도착 지점이 모두 동일한 도로가 두 개 이상 존재할 수 있다. 알고리즘 분류 다이나믹 프로그래밍 (dp) 비트마스킹 (bitmask) 비트필드 위에서의 다이나믹 프로그래밍(dp_bitfield) 외판원 순회 문제 (tsp) 풀이 문제의 요구 사항과 제한을 보면 $tsp$ 냄새가..
백준 30943 - Zatopljenje (C++) 문제 문제 링크 BOJ 30943 - Zatopljenje 문제 요약 $N$개의 지점에 대해 $h_1, h_2, ... , h_N$이 주어진다. 아래 쿼리를 수행하는 프로그램을 작성해보자. $l$ $r$ $x$ : 해수면이 $x$까지 차올랐을 때, $[l, r]$에서 볼 수 있는 섬의 개수를 출력한다. 만약 인접한 섬이 모두 보인다면, 이는 하나로 쳐야 한다. 제한 TL : $2$ sec, ML : $1024$ MB $1 ≤ N, Q ≤ 200,000$ $0 ≤ h_i, x ≤ 10^9$ 알고리즘 분류 자료 구조(data_structures) 세그먼트 트리(segtree) 오프라인 쿼리(offline_queries) 풀이 온라인으로 풀기엔 좀 난감해 보인다. 쿼리를 순차적으로 처리할 때, $x$가 단조성..