목록이분 탐색 (3)
algoqna
15732번: 도토리 숨기기 첫째 줄에 상자의 개수 N(1 ≤ N ≤ 1,000,000)과 규칙의 개수 K(1 ≤ K ≤ 10,000), 도토리의 개수 D(1 ≤ D ≤ 1,000,000,000)가 주어진다. 그 후 K개 줄에는 A, B, C(1 ≤ C ≤ A ≤ B ≤ N)가 주어지며 A번 상자부터 www.acmicpc.net 조건 상자의 개수 N(1 ≤ N ≤ 1,000,000)과 규칙의 개수 K(1 ≤ K ≤ 10,000), 도토리의 개수 D(1 ≤ D ≤ 1,000,000,000) K개 줄에는 A, B, C(1 ≤ C ≤ A ≤ B ≤ N)가 주어지며 A번 상자부터 B번 상자까지 C개 간격으로 도토리를 하나씩 넣는 규칙을 뜻한다. D는 모든 규칙으로 넣을 수 있는 도토리의 수보다 같거나 작다. 문..
18113번: 그르다 김가놈 첫 번째 줄에 손질해야 하는 김밥의 개수 N, 꼬다리의 길이 K, 김밥조각의 최소 개수 M이 주어진다. (1 ≤ N ≤ 106, 1 ≤ K, M ≤ 109, N, K, M은 정수) 두 번째 줄부터 김밥의 길이 L이 N개 주어진다. www.acmicpc.net 1. 문제의 조건에 따라 김밥의 길이들이 K보다 작거나 같은지, 2K보다 작은지, 2K보다 큰지를 판별하여 김밥의 길이를 갱신한다 2. 모든 김밥의 길이 중 가장 긴 김밥의 길이를 기록해둔다 - 이분 탐색을 하기 위해 가장 긴 길이가 기준이 된다. 3. 가장 긴 김밥의 길이가 0이라면 -1 4. 나누고 싶은 김밥의 최소 개수가 1개라면 가장 긴 길이가 답 5. 위의 3, 4번의 경우가 아니라면 1 ~ 가장 긴 길이 사이에..
1. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다. - 국가 예산이 모든 예산 요청의 합보다 큰 경우 예산 요청들 중 제일 큰 값 반환 2. 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 배정한다. 상한액 이하의 예산요청에 대해서는 요청한 금액을 그대로 배정한다. 가) 이분 탐색으로 0 ~ 가장 큰 예산의 중간값을 구한다. 나) 구한 중간값으로 각각의 예산들에 중간값을 할당해본다. - 모든 예산들에 할당했을 때 국가 예산을 초과한 경우는 중간값을 줄여서 다시 할당해본다 - 모든 예산들에 할당했을 때 국가 예산을 초과하지 않은 경우는 중간값을 늘려서 할당해본다 import java.io.*; import java.util.*..