
https://www.acmicpc.net/group/21869요즘 그룹을 만들어서 시간을 재고 USACO 셋을 밀고 있다. (가입 신청 환영!!)첫 연습셋으로 2023 February Contest의 Silver 셋을 돌렸다. 아직 부족한 게 많은 것 같다. ㅠ 27846: Bakery (P4, 수학, 이분 탐색) 대충 이분 탐색을 돌리면 되겠다는 생각만 가지고 있었는데, 어떻게 이분 탐색을 돌릴 지 몰라 못 풀었다. 삼분 탐색, 2차원 이분 탐색(...) 등 여러 뻘짓을 했다. 쿠키와 머핀을 굽는 데 필요한 시간의 합을 기준으로 이분 탐색을 돌리면, 놀랍게도 부등식이 잘 풀려서 $O(n)$에 판별 가능한 꼴이 된다! 따라서 시간복잡도 $O(N\log{M})$에 문제를 풀 수 있다. ($M$: $t_..

시험 기간에 기분 전환할 겸 랜디를 돌렸습니다!코드포스 스타일의 문제를 조금 연습하고 싶어서 그리디, 수학, 애드 혹, 구성적, 조합론, 정수론 문제 중 S2 ~ G3인 문제들을 골라 풀었습니다.27467: 수학 퀴즈 (S1, 수학, 05:23)방정식 $x^3 = 1$의 허근 $\omega$의 성질을 잘 활용하면 되는 문제이다. 24956: 나는 정말 휘파람을 못 불어 (G4, 조합론, 10:27)H를 기준으로 앞에 있는 W의 개수와 뒤에 있는 E의 개수를 적절히 세어 주면 된다.H 앞에 W가 W[i]개만큼 있고, 뒤에 E가 E[i]개만큼 있으면, 만들 수 있는 유사 휘파람 문자열의 수는 $W[i] \cdot (2^{E[i]}-E[i]-1)$ 개이다.W[i]와 E[i]를 누적합 비슷한 dp로 처리해주고..

두달만에 다시 글을 쓰네요!교내 알고리즘 동아리에서 매주 세미나를 진행하는데, 연습문제를 모두 풀면 동아리비를 환급해준다는 말을 듣고 이번 주차 연습문제를 한번 풀어보았습니다. 25545: MMST (G2, MST) 최소/최대 스패닝 트리가 아닌 아무 스패닝 트리만 구해 출력하는 문제이다. 주어진 그래프에 사이클이 존재한다면 ($V\leq E$) 서로 다른 스패닝 트리가 적어도 3개 존재한다는 것을 알 수 있다. 따라서, 크루스칼 알고리즘을 따라 진행하다가, union-find를 통해 최초로 사이클이 생기는 간선을 찾으면, 해당 간선을 이어주고 다시 처음부터 크루스칼을 돌려 찾고자 하는 스패닝 트리를 얻을 수 있다. 28424: 의리 게임 (G3, Union-Find) 유니온 파인드를 활용한 쿼리 문..
한달만에 돌아왔네요! ㅠㅠ 사실 PS에 대한 흥미가 좀 떨어졌었는데, 입학하기 전까지 민트는 찍어야지(...) 하는 생각에 다시 문제를 풀게 되었습니다. 개인적으로 그리디를 어렵게 느끼고 있던 참이라서, 이번엔 백준 그리디 연습 문제집에 있는 문제들을 낮은 티어부터 쭉 돌아보았습니다. 11000: 강의실 배정(G5) 사용하는 최소 강의실의 개수는, 가장 많은 강의가 겹치는 시점에서의 강의 개수와 같다. 따라서 정렬을 통해 답을 O(NlogN)에 구할 수 있다. 2831: 댄스 파티(G4) 양수 남자 - 음수 여자, 혹은 음수 남자 - 양수 여자끼리만 짝지어 주어야 한다. 양수 남자와 음수 여자가 짝짓는 경우만을 생각해보자. 우선 키가 작은 순서대로 남자를 선택하면 최적해를 얻을 수 있다는 건 쉽게 알 수..
오랜만에 업다운랜디를 돌렸다. 21276: 계보 복원가 호석(G2, Tree) 시간 안엔 못 풀었다.. 자신의 조상 노드가 문제에서 주어지므로, 맵(map)에 자신의 조상 노드를 모두 담고, 조상 노드를 순회하면서 set의 크기가 자신보다 1 작은 것이 있으면 해당 노드가 자신의 부모 노드가 된다. 부모 노드가 없다면 루트 노드가 되고, 가문의 개수는 루트 노드의 개수와 같다. 이를 이용해 시간복잡도 O(N^2logN)에 계산할 수 있다. 별해) 입력받을 때, 자신보다 깊이가 깊은 노드들에 대해 위에서 아래로 가는 단방향 간선을 만들어준다. 이후 위상 정렬을 수행하면 역시 시간복잡도 O(N^2logN)에 해결할 수 있다! 2492: 보석(G3, Brute-Force) 풀이가 전혀 떠오르지 않아서 그냥 답..
이번에도 어김없이 업다운랜디를 돌렸습니다. 학교에서 할 게 없어서 하루종일 문제만 풀고 있네요 ㅋㅋㅋ 12784: 인하니카 공화국(G3, Tree, 16:00) dp[i]를 i번을 루트로 하는 트리에서 필요한 최소 다이너마이트의 개수로 잡고 트리 dp를 돌릴 수 있다. 사실 재사용되는 값이 없어서 메모이제이션은 필요하지 않다! 오랜만에 트리DP를 짜봐서 구현이슈가 좀 있었다... 11967: 불켜기(G2, BFS) 시간 초과... 새로운 방에 불을 킬 때마다 그 방의 상하좌우를 탐색해서, 이미 방문한 지점이 있다면 새로운 방을 큐에 넣어준다. 예전에 재채점으로 틀렸던 문젠데 드디어 풀었다 ㅎㅎ 15711: 환상의 짝꿍(G3, 정수론, 18:35) A+B가 짝수인 경우는 골드바흐의 추측(웬만큼 큰 정수까지..
오늘부터 PS 공부일지를 써 보려고 한다!입시가 끝나서 PS를 자유롭게 할 수 있는 몸이 되었으므로,,, 앞으로 꾸준히 글을 쓸 예정이다. 오늘은 LCA 알고리즘과 희소 테이블을 공부했다. 15480번: LCA와 쿼리(P2) 케이스 분류가 정말 빡센 문제였다.쿼리로 들어오는 두 정점이 일직선 상에 있는지 아닌지를 우선 나누고,일반적인 트리의 형태를 그려서 각 정점별로 답이 될 수 있는 값을 찾는다.이 때 판단의 기준을 1번 정점, u, v, lca(u, v), 그리고 각 정점의 depth 값으로 한다. 13511번: 트리와 쿼리 2(P3) lca, 그리고 희소 테이블(binary shifting)을 이용하는 문제이다.1, 2번 쿼리 모두 lca를 찾는 과정에서 만든 이동 배열을 재사용해서 해결할 수 ..
- Total
- Today
- Yesterday