본문 바로가기

전체 글

(147)
2023 고려대학교x연세대학교 프로그래밍 경시대회 Open Contest 2023 고려대학교x연세대학교 프로그래밍 경시대회 Open Contest www.acmicpc.net A - 당신은 운명을 믿나요? 구현 00:02 AC B - Parity Constraint Closest Pair (Easy) 배열 A, B, C를 다음과 같이 정의하자. A = 홀수 좌표를 저장하는 배열 B = 짝수 좌표를 저장하는 배열 C = 모든 좌표를 저장하는 배열 서로 다른 두 점의 거리 중 짝수인 최솟값은 배열 A와 B에서 인접한 원소의 차잇값의 최솟값을 구하면 된다. 홀수인 최솟값은 방금 전과 동일하게 배열 C에서 인접한 원소의 차잇값의 최솟값을 구하면 된다. 이때 인접한 두 원소의 parity가 상이한 경우만 고려해야 한다. 00:07 WA 분명히 완벽한 풀이인데 WA를 받았다. 원인을 찾..
BOJ 13161번 - 분단의 슬픔 13161번: 분단의 슬픔 첫 번째 줄에는 UCPC 구성원의 수 N(1 ≤ N ≤ 500)이 주어진다. 두 번째 줄에는 N개의 정수가 주어지는데, i번째 수가 1이면 i번 사람은 무조건 A진영에 들어가야 함을, 2라면 무조건 B진영에 들어가야 www.acmicpc.net UCPC 2016에 출제된 flow 문제이다. 그래프가 크기 때문에 dinic 또는 그보다 빠른 flow 알고리즘이 필요하다. 워낙 유명한 문제이기에 풀이는 생략한다. 이 문제에서 dinic으로 TLE를 받는다면 다음 두 가지를 확인해보자. 첫 번째로 dfs 과정에서 매번 간선을 처음부터 확인하면 O(V^2 E)가 보장되지 않는다. work 배열과 reference 변수를 이용하여 해결할 수 있는데 구글링하면 금방 찾을 수 있다. 두 번..
2023 UNIST-DGIST-POSTECH 연합 프로그래밍 경진대회 (2023 UDPC) Open Contest 2023 UNIST-DGIST-POSTECH 연합 프로그래밍 경진대회 (2023 UDPC) Open Contest www.acmicpc.net A - 탁구 경기 단순 구현 00:01 AC B - UDPC 파티 U와 C의 빈도의 합을 x, D와 P의 빈도의 합을 y라고 하자. 먼저 C가 등장하지 않았고 D와 P가 균등하게 등장하였다고 가정하자. 이 경우 x > (y + 1) / 2를 만족하면 윤이가 선정될 수 있으므로 "U"를 출력하면 된다. 다음으로 U가 등장하지 않았다고 가정하자. 이 경우 y > 0을 만족하면 달구 또는 포닉스가 선정될 수 있으므로 "DP"를 출력하면 된다. "C"를 출력하는 경우는 존재하지 않는다. 00:08 AC C - 카드 뒤집기 양 끝에서 시작하여 번갈아가며 뒤집으면 된다. N..
GEC-Cup (Open contest) GEC-Cup (Open contest) www.acmicpc.net 서론 문제 질이 조금 아쉬웠는데 내 기준에서 흥미로운 문제가 없었다. A - 특별한 학교 이름 구현 00:01 AC B - 특별한 작은 분수 구현 00:03 AC C - 특별한 학교 이름 암호화 구현 처음 세 자리만 보면 된다. 00:06 AC D - 특별한 큰 분수 시간이 어느 정도 경과하면 다음 사이클 중 하나에 빠지게 된다. 4 4 4 ... 8 2 7 8 2 7 ... 0 6 5 12 0 6 5 12 ... 00:26 AC F - 특별한 서빙 pq 00:30 AC E - 특별한 드롭킥 인접한 장애물을 최대한 병합하되 더 이상 병합할 수 없다면 기존 장애물에 붙여서 설치한다. 00:44 WA 거리가 가까운 장애물부터 병합해야 한다..
AI Network Scholarium I AI Network Scholarium I www.acmicpc.net 서론 Hello BOJ의 악몽이 떠오르는 대회였다. A - On My Way Dorm 출근 커맨드를 역순으로 출력하면 된다. 예제 입력이 이해가 잘 안돼서 조금 늦게 풀었다. 00:12 AC B - aFan Event Planning 누적 합 + set 00:17 WA 사소한 구현 실수가 있었다. 00:19 AC C - Appearance of the Runo (not solved) 포함 배제로 풀릴 듯 하면서도 너무 복잡해 보여서 포기하였다. 그런데 정해는 포함 배제가 맞았다. 매우 복잡한 포함 배제가 정해였다. 3주 전에 업솔빙하면서 풀이를 예쁘게 정리하여 test.txt 파일로 저장해놓았다. 그런데 test.txt라는 이름 때문..
2022 경인지역 6개 대학 연합 프로그래밍 경시대회 shake! Open Contest 2022 경인지역 6개 대학 연합 프로그래밍 경시대회 shake! Open Contest 사용 가능한 언어 C++17 Java 8 Python 3 C11 PyPy3 C++11 C++14 Java 11 www.acmicpc.net B - 지수를 더하자 수학 00:04 AC D - 버튼 정렬 최초 한 번만 정렬되면 이후에는 주기성이 생긴다. 00:16 WA 예제만 통과하는 잘못된 코드였다. 00:20 WA 다음과 같은 반례에 주의해야 한다. 5 1 2 3 5 4 10 잘못 생각하면 한 번의 연산으로 마지막 4를 5로 만들 수 있다고 생각할 수 있다. 하지만 이전의 모든 원소 x에 대하여 x > 4를 만족하여야 한다. 따라서 수열 A가 최초로 정렬되는 시점은 1이 아닌 10이 된다. 00:25 AC A - 팝..
LzSeg 사용 시 주의 사항 배열 st와 lz를 이용하여 LzSeg를 구현한다고 가정하자. st[p]에 접근하기 전에는 반드시 propagate(p, l, r)을 호출하여 lz의 데이터를 st에 반영해줘야 한다. 정말 기본적인 원칙인데 미처 생각하지 못하고 몇 시간 동안 디버깅하였다. 문제가 되었던 코드는 다음과 같다. int ret = query(2 * p, l, m, i, j); st[p] = max(st[2 * p], st[2 * p + 1]); if (ret != -1) return ret; ret = query(2 * p + 1, m + 1, r, i, j); st[p] = max(st[2 * p], st[2 * p + 1]); return ret; query 함수 내에서 propagate 함수를 호출하고 있다. (2 * ..
2023 중앙대학교 CHAC (ChAOS Hello2023 Algorithm Contest) Open Contest 2023 중앙대학교 CHAC (ChAOS Hello2023 Algorithm Contest) Open Contest www.acmicpc.net A - 찬반투표 단순 구현 00:01 AC B - 시프트 연산 다음 4가지 경우만 고려하면 된다. L-시프트 R-시프트 L-시프트 후 R-시프트 R-시프트 후 L-시프트 00:14 AC D - 버섯 농장 dfs 대회 참가 직전에 푼 문제랑 비슷해서 코드 복붙하고 살짝 수정하였다. 00:20 AC F - 연산자 파티 right shift 이후 X는 항상 0이 됨에 주목해야 한다. 00:25 AC H - 월드컵 조별리그 이분 탐색 00:43 WA 이분 탐색 범위를 잘못 잡았다. 00:44 AC C - 견제 미로찾기 게임 이론 dp 대회 중에는 그런디 수까지 사용하며..