본문 바로가기

분류 전체보기

(10)
LGCPC 2024 B, C 풀이 BSubtask 1 : $x = 1$구슬을 흘려보냈을 때 도착하는 위치는 왼쪽으로 이동할 때 1칸만 이동할 수 있으므로, amortized $O(1)$에 업데이트할 수 있습니다.따라서 현재 도착 위치에서 다음 도착 위치를 naive하게 구해주어도 $O(N+Q)$에 문제가 해결됩니다. Subtask 2 : $N, Q \le 5000$쿼리가 주어질 때마다 다음 배열이 어떻게 되는지 $O(N)$에 다양한 방법으로 구할 수 있습니다. 따라서 시간복잡도는 $O(NQ)$입니다. Subtask 3 : 추가 제약 조건 없음stack을 이용하여 문제를 해결합니다. 각 $A[i]$에 $i$를 더해준 후, 스택을 활용해 최댓값이 업데이트되는 부분을 저장합니다. 그 후 그 지점을 중심으로 그 지점의 원래 높이와 주변 높이가 ..
코드포스 IGM 달성 후기 2022년 11월 26일에 열린 코드포스 글로벌 라운드에서 IGM을 달성했다. 충분히 IGM을 갈만하다는 생각은 했지만 아직 레이팅이 2518이었고 2600을 찍으려면 82점이나 올려야 하기 때문에 오래 걸릴 줄 알았는데 평소보다 훨씬 좋은 성적을 거뒀고 무려 116점이 올라 레이팅이 2634가 되었다. D. Doremy's Pegging GameABC까지는 무난하게 풀었는데, D에서 처음으로 말렸다. 난이도는 플래티넘 하위 정도인 수학 문제인 것 같다. nCr 하나를 곱하면 되는데 이걸 못 보고 30분 정도 삽질했다. 충분히 빨리 풀 수 있는 문제였고, 이 문제를 빨리 풀었다면 전체적으로 점수가 높아지고 G3을 풀 시간이 생겨 티셔츠를 받을 수 있는 30등 안에 들 수 있었던 것 같아 아쉬움이 남는다...
IOI 2018 5번 Highway Tolls 풀이 https://oj.uz/problem/view/IOI18_highway 문제 보기 - 통행료 (IOI18_highway) :: oj.uz 문제 보기 - 통행료 (IOI18_highway) oj.uz 모든 서브태스크에서, 도시가 모두 한산할 때의 통행료를 $w_0$이라고 한다. 이것은 1개의 쿼리를 소모해 미리 구해놓는다. 1. 5점 풀이(Subtask 1) 쿼리가 100개, 도로가 99개이므로 모든 도로에 대해 그 도로만 혼잡하게 한 다음 통행료 $w$를 계산하면 $w > w_0$인 도로들이 경로를 만들게 된다. 이 경로의 양 끝 점에 있는 두 도시가 $S$와 $T$가 된다. 2. 12점 풀이(Subtask 1, 2) 트리상에서 두 도시 $S$와 $T$의 거리는 $D = \frac{w_0}{A}$이다...
2021.06.02 problem solving 오늘 하루만에 다이아 1, 다이아 3, 다이아 5, 플래 3을 한 문제씩 풀어서 기분이 매우 좋다. BOJ 18510 : Program (solved.ac 난이도 : P3) 더보기 2번 명령이 나온 개수의 prefix sum을 저장하며 i번 명령의 마지막 위치, i번 쿼리의 dp값 세 개를 저장하면 문제를 풀 수 있다. i번째 명령이 1번이라면 p의 마지막 위치와 p의 dp값을 모두 i로 바꾼다. i번째 명령이 2번이라면 지금까지 p였을 때 없애야 할 개수와 지금까지 q였을 때 없애야 할 개수를 비교한 다음 둘 중 작은 걸 선택하면 된다. 그 후 마지막으로 dp값들과 마지막 위치와 2번 명령이 나온 개수의 prefix sum과의 관계를 잘 생각하며 식 계산을 하면 풀린다. Time Complexity :..
2021년 1월 백준 기록(플래 이상 주요 문제) 보호되어 있는 글입니다.
IOI 2018 4번) Mechanical Doll https://www.acmicpc.net/problem/20064 20064번: Mechanical Doll Let M = 4, N = 4, and A = [1, 2, 1, 3]. The grader calls create_circuit(4, [1, 2, 1, 3]). The above figure shows a circuit, which is described by a call answer([1, -1, -2, 0, 2], [2, -2], [3, 1]). The numbers in the figure are the serial numbers of the dev www.acmicpc.net Switch의 성질 관찰 Switch는 다시 초기 상태로 돌아와야 하기 때문에, 공이 짝수 번 들어와야 합니다. ..
AtCoder Beginner Contest 189 (올솔 >_<) A - Slot 문제에서 하라는 대로 하면 됩니다. if문으로 C1 = C2 = C3일 때 Won, 그렇지 않으면 Lost를 출력합니다. B - Alcoholic 이것도 문제에서 하라는 대로 $v \times \frac{p}{100} > x$이 되는 시점을 출력합니다. 단, 부동 소수점 때문에 발생하는 실수 오차에 주의해야 합니다. 실수 오차를 없애기 위해 $v \times p > x \times 100$이 되는 시점을 출력하면 정수계산만으로 풀 수 있습니다. C - Mandarin Orange $N \leq 10000$이니까 $O(N^2)$에 가능합니다. $i$번째 오렌지부터 시작해서 $j$번째 오렌지까지 먹을 때 $x$의 최댓값은 $A_i, A_{i+1}, ..., A_j$ 중 최솟값입니다. 따라서 ..
오늘의 문제 2일차 ~ 6일차 풀이 6일차 (장미) : 실버 I $a \times c$개의 장미를 살 때는, $\frac{b}{a}, \frac{d}{c}$ 중 작은 쪽의 장미를 사는 것이 무조건 이득입니다. 따라서, 장미 한 개당 가격이 높은 장미를 $a \times c$개 이상 사지 않습니다. 따라서 $\frac{b}{a} > \frac{d}{c}$라면 a의 한 개당 가격이 더 비싸니까, a개 짜리를 0묶음, 1묶음, ..., c-1묶음 사는 경우를 고려해주면 됩니다. 시간복잡도 : $\frac{b}{a} > \frac{d}{c}$이면 $O(c)$, $\frac{b}{a} j인 모든 (i, j)에 대해, dp[i][j]를 구해줍니다. 이분탐색으로 수열의 i번째 항 - j번째 항 = j번째 항 - m번째 항인 m을 찾으면, dp[i][j..
(BOJ 17372) 피보나치 수의 최대공약수의 합 https://www.acmicpc.net/problem/17372 17372번: 피보나치 수의 최대공약수의 합 첫 번째 줄에 구하는 합을 1,000,000,007로 나눈 나머지를 출력합니다. www.acmicpc.net 모바일 환경일 경우 수식이 깨질 수 있습니다. 수열 F가 $F_{1} = 1, F_{2} = 1, F_{n+1} = F_{n} + F_{n-1}$를 만족할 때, $\sum_{i=1}^{n}{\sum_{j=1}^{n}{gcd(F_{i}, F_{j})}}$ 를 구하는 문제입니다. 배경지식 gcd(a, b) : a, b의 최대공약수로, 자연수 a와 b를 모두 나누는 가장 큰 자연수입니다. $I$ : 자연수 n에 대해 f(n) = 1을 만족하는 함수입니다. $Id$ : 자연수 n에 대해 f(n..
2021.01.03 PS - CEOI 2017 2번 1번 문제 2번 문제 3번 문제 난이도 순서대로 2번 -> 1번 -> 3번 순서대로 풀 예정입니다. 2번. SURE BET 서브태스크 1 : N b[i]; } sort(a, a+n, cmp); sort(b, b+n, cmp); double ans = 0; sum_a[0] = 0, sum_b[0] = 0; for(int i=1;i a[i] >> b[i]; } sort(a+1, a+n+1, cmp); sort(b+1, b+n+1, cmp); double profit_a = 0, profit_b = 0, ans = 0; for(int x = 0, y = 0; x + y < 2*n ;){ if(x == n){ y++; profit_a += -1; profit_b += b[y] - 1; ans = max(ans,..