본문 바로가기

rpdd7

BCC(이중 연결 요소) 이쁘게 구현하기 이중 연결 요소를 제가 이해할 수 있도록 설명한 글이 없어서 조금 더 직관적인 방식으로 구현한 BCC에 대해 소개해보고자 합니다. 먼저, 알고리즘의 대략적인 설명은 이렇습니다.1. 아무 정점에서 DFS 스패닝 트리를 구성한다.2. 백엣지가 있는 경우, 양 끝점을 잇는 경로 위의 점들은 모두 같은 BCC에 포함되므로 묶어준다.3. 2. 에서 중복 간선이 있는 경우를 예외 처리한다. 더 자세한 디테일들은 코드와 함께 설명하겠습니다. #include using namespace std;#define int long long#define fastio; cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false);const int mod=1e9+7, MOD=9982443.. 2025. 11. 29.
NYPC 2025 후기 끝나기 직전까지 섭테를 긁느라 타임라인이 정확하지 않습니다. 아마 오차 10분 정도로 맞을거에요:) 대회 전별거 없으므로 생략합니다.0:12(100) 1번 문제를 읽었습니다. 뭔 보드게임을 만들어놨길래 똥구현 문제일 줄 알고 긴장하면서 읽었습니다. 그런데 읽고 보니 지문에서 중요한 내용은 별로 없고, 단순히 점수만 계산하면 되는 문제였습니다. 입력을 파싱하고 dfs를 해주면 되는데, 조금 귀찮았지만 호다닥 짜서 100점을 받았습니다. 1트에 성공해서 기분이 좋았습니다. 0:30(133) 2번 문제를 읽었습니다. 어떤 정점에서 그 부모로 이동하는 개미의 수로 가능한 값은 최대 3가지임을 알 수 있었고, 한 점에 개미 3마리가 모이는 경우를 처리하지 않은 코드를 제출하여 일단 33점을 받았습니다. 1:00(.. 2025. 10. 31.
2025 나는코더다 반년대회 후기 2025년 8월 20일 진행된 나는코더다 반년대회의 후기입니다.woohyun_jng과 재우야 한 번 만져줘라 / 재우야 한 번만 져줘라 로 참가하려고 했으나, lighton의 철퇴를 맞고 ⬆️❤️⬇️ / ⬇️❤️⬆️로 참가했습니다. 각각 2등, 4등을 차지해 1, 3, 5등 간의 삼각관계를 만드는 것이 목표였습니다.대회 시작 전에 먹은 피자는 맛있었습니다. 1인 할당량보다 많이먹음 0:00 ~ 0:03 (0, -)A번 문제가 가장 쉽다고 해서 A번부터 봤습니다. 잠깐 생각해보니, 구간에 덮여지는 위치의 수들은 0인 횟수와 1인 횟수가 같다는 것을 알 수 있었고, 이를 구현했으나 WA를 받았습니다. 0:03 ~ 0:06(100, -> 3위)구간에 덮여지지 않은 수 중 처음부터 1이였던 수를 고려하지 않았음.. 2025. 8. 22.
2025 KOI 고등부 1차 후기 일단 좆됐습니다. 확정적으로 틀린 풀이 및 실수는 볼드체 처리를 해 두었으니, 읽을 때 참고하세요! 1교시1. 그냥 넣었다 뺐다 해주면 됩니다.2. A, B, C, D 속력의 비율을 찾으면 됩니다.3. S를 만드는 과정을 거꾸로 진행하면 됩니다. 근데 S가 처음에 1이라는 사실을 놓쳤습니다.4. 49번째로 큰 수가 아닌 49번째로 작은 수를 찾아버렸습니다. 덕분에 2918이 나왔어요!5. A, B를 각각 구하고, 이를 이용해 C를 구하면 됩니다. 연산 실수가 있었습니다.6. A=B인 경우를 구해 전체에서 빼고 1/2를 곱하면 됩니다. 연산 실수가 있었습니다.7. n>=13, n%108. f를 여러 번 적용하다 보면 규칙을 찾을 수 있습니다.9. (x+y+z) / 3이 홀수 (x+y+z)가 홀수 라는 말.. 2025. 6. 30.
[비재귀] 세그먼트 트리 & 느리게 갱신되는 세그먼트 트리 세그먼트 트리를 비재귀로 구현하는 것이 얼마나 아름답고 즐거운 일인지 아시나요? 모르는 사람이 꽤 많은 것 같아, 비재귀 세그먼트 트리의 아름다움을 조금 더 많은 사람들에게 알리기 위해 설명글을 작성해 보았습니다.각각의 목표는 BOJ 2042(구간 합 구하기), BOJ 10999(구간 합 구하기 2)를 푸는 것을 목적으로 하겠습니다.(괄호를 클릭하면 코드를 볼 수 있습니다.)rpdd# 비재귀 세그먼트 트리비재귀 세그먼트 트리의 경우, 세그먼트 트리의 리프 노드가 모두 같은 깊이에 있는 것이 구현에 훨씬 유리하기 때문에 완전 이진 트리를 만들어 구현하는 것을 기본으로 합니다. 노드의 인덱스를 다음과 같이 정하고 배열로 생각하면 좋습니다.(코드 - 배열 정의)const int X=4;int seg[1리프 노.. 2025. 5. 14.
BOJ 28000 Tourism #소개2022/2023 JOISC 3-3 기출 문제로, 난이도는 solved.ac 기준 Diamond II입니다.제 풀이가 정해와 달라 풀이를 작성해보려고 합니다. #문제 요약- $N$개의 정점을 가진 트리 형태의 섬들과, $M$개의 관광 명소가 각각 섬 $C_1, C_2, ... , C_M$에 위치해 있다. 다음과 같은 $Q$개의 쿼리를 처리해야 한다.- $L\text{ }R$ : $C_L, C_{L+1}, ... , C_R$까지의 섬을 모두 방문하기 위해 지나야 하는 섬들의 최소 개수를 출력한다.- $1 \le N, M, Q \le 100,000$ #사용한 알고리즘- 세그먼트 트리- 최소 공통 조상- 오프라인 쿼리- 오일러 경로 테크닉- 희소 배열 #풀이*다음과 같이 정의합니다.$C_1, C_2, ... 2025. 5. 10.