분류 전체보기 203

220520 팀 연습 (2018 Pacific Northwest Region Programming Contest)

셋은 https://www.acmicpc.net/category/detail/1976를 사용하였으며, 4시간 동안 진행하였다. 내가 A~D, slah007 선배가 E~I, qjatn0120 선배가 J~M을 잡고 시작했다. ~0:17 브~실 총 4문제를 1트만에 모두 밀었다. ~0:22 B는 깡수학이길래 넘겼고, C를 봤는데 Simple DP로 되길래 짜서 AC. ~0:57 B를 우리 중 이런 문제에 가장 강한 slah007 선배에게 넘기고 나는 D를 봤는데, D도 못 풀겠어서 선배들이 보던 문제중 F를 잡았다. F는 보자마자 그냥 XOR 세그+스위핑이란걸 깨달았다. 좌표 압축+누적합 등 처리해야 하는 부분이 꽤 있어 코딩 컴퓨터에서 나와있는 동안 구현을 대충 해놓았고, B AC가 뜨자마자 컴퓨터에 들어갔..

연습/000102 2022.05.21

220513 팀 연습 (UKIEPC 2020)

qjatn0120, slah007 선배와 대면으로 하는 첫 팀연습이다. 셋은 UKIEPC 2020을 사용하였으며, 4시간 동안 진행하였다. 내가 A~D, qjatn0120 선배가 E~I, slah007 선배가 J~M을 보기로 했다. ~00:13 qjatn0120 선배가 E가 쉽다고 하셔서 컴퓨터를 넘겼는데, 틀리길래 B3 난이도인 D를 짜서 맞았다. ~00:26 이후 D와 똑같은 과정으로 slah007 선배가 J를 맞아오셨고, 나는 E AC 코드가 나오는 동안 C 풀이를 구상하고 있었다. 잘 가다가 59%에서 틀리길래 코너 케이스가 있을 것이라 생각했고, 모두 0인 경우를 예외처리 해주었더니 맞았다. ~00:45 선배들이 H, I, M을 맞아왔다. 이 문제들은 내용을 아직 몰라서 할 말이 없다. 나는 이..

연습/000102 2022.05.14

오늘의 PS (6) - 220508

ABC와 코포 Div. 1이 있어서 둘다 쳤다. AtCoder Beginner Contest 250 A. Adjacent Squares (0:01, +) *25 if문을 4개 써주면 된다. B. Enlarged Checker Board (0:04, +) *109 그냥 별 찍기다. C. Adjacent Swaps (0:07, +) *517 값을 담은 배열과 역추적 배열을 만들어서 잘 바꿔주면 된다. D. 250-like number (0:16, +) *797 우선 에라토스테네스의 체로 \(10^6\) 이하의 소수를 모두 구해준 후, 각 소수에 대해 이분탐색으로 만족하는 더 작은 소수의 개수를 구해주면 된다. E. Prefix Equality (0:23, +) *1421 \(C_i\)를 \(A_i\)가 \(..

PS/오늘의 PS 2022.05.09

오늘의 PS (5) - 220501~7

카테고리 제목이 '오늘의 PS'인데 제목에는 당당히 7일치를 박아놓았다. 하지만 저 기간 중 문제를 풀었다고 할 날은 5월 1일과 7일 이틀뿐이었기 때문에, 한 글에 정리해보려 한다. 5월 1일 - 2022 DGIST 현풍전산배 알고리즘 대회 Open Contest 타임라인은 정확히 기억이 나지 않아 문제별 후기만 간단히 정리하도록 하겠다. A. 에어컨 전형적인 구현 문제이다. A번 치고는 까다로운 구석이 여럿 있었던 것 같다. 출력 형식 때문에 printf를 오랜만에 사용해 볼 수 있었다. B. 비즈마켓 코포 Div.2에서 볼 수 있을 것 같이 생겼다. 두 배열을 하나는 오름차순, 하나는 내림차순으로 정렬한 뒤 잘 구해주면 됐던 것 같다. C. D. 사각형 게임 (Small, Large) 오픈콘이라 두..

PS/오늘의 PS 2022.05.08

Codeforces Round #785 (Div. 2)

A. Subtle Substring Subtraction (00:04, +) 평소 A치고 어려웠다. 문자열의 길이가 짝수면 자명하게 선공이 다 지울 수 있고, 홀수라면 첫 글자를 남기거나 마지막 글자를 남기는 것이 최적이다. B. A Perfectly Balanced String? (00:14, +) B답게 쉬울 것 같아서 적당히 찍었더니 맞았다. 내가 한 가정은 '두 같은 알파벳 사이에 다른 모든 알파벳이 최소 하나씩은 있어야 한다' 이다. C. Palindrome Basis (00:18, +1) 팰린드롬의 수가 적당히 작기 때문에 \(O(NM)\)에 냅색을 써주면 풀 수 있다. D. Lost Arithmetic Progression (01:18, +1) 우선 예외 케이스를 잘 분석해서 0, -1에 대..

PS/CP 2022.05.01

오늘의 PS (4) - 220423

앳코더와 코드포스 글로벌 라운드가 있었다. AtCoder Beginner Contest 249 A. Jogging (0:05, +) *103 지문이 이상하게 쓰여 있어서 좀 헤멨다. 문제 자체도 평소 ABC A보다 어려웠다. B. Perfect String (0:07, +) *47 하라는대로 하면 된다. C. Just K (0:11, +) *528 이것도 지문이 조금 불친절하긴 했는데, 하라는 대로 완전탐색을 돌려주면 맞는다. D. Index Trio (0:30, +2) *983 인덱스가 같을 수도 있어서 식을 좀 생각해서 써주어야 한다. 예제가 앳코더답지 않게 불친절해서 많이들 틀리는 것으로 보였다. E. RLE (1:00, +) *1970 \(DP[i][j]\)를 i번째 글자까지 쓰고, 압축 길이가 ..

PS/오늘의 PS 2022.04.24

220422 팀 연습 (LARC 2018)

일정상의 관계로 slah007 선배와 둘이 진행하였다. 셋은 Latin America Regional Contests 2018을 사용하였다. ~00:06 A가 쉽다는 소식을 듣고 코딩 컴퓨터를 잡은 내가 바로 짰다. 실수 오차때문에 2번 틀리고, 입력을 string으로 받아서 AC를 띄웠다. ~00:08 뒤부터 문제를 보다 보니 M도 그냥 쉬웠고, 바로 짜서 맞았다. ~00:23 선배가 B가 쉽다고 하셔서 컴퓨터를 넘겼다가, 맞왜틀을 당하시길래 D를 금방 짤 수 있던 내가 들어가서 바로 짰다. ~00:31 같이 틀릴 이유가 없는 B 코드를 열심히 보았고, 내가 반례를 찾아서 if문 한 줄을 추가했더니 맞았다. ~00:45 M을 볼 때 슬쩍 봐둔 L을 선배한테 드렸는데, 굉장히 빨리 푸셨다. 그냥 뇌 비우..

연습/000102 2022.04.23

오늘의 PS (3) - 220420

카테고리 제목이 PS인데 너무 CP만 다룬 것 같아서 최근에 푼 백준 문제들 중 인상깊었던 것들을 정리해서 쓰려고 한다. 세미나를 준비하면서 백준에 있는 행렬 DP 문제는 거의 몽땅 푼 것 같다.. 이번에 정리할 문제들도 모두 여기에 속하는 것들이다. 2086 - 피보나치 수의 합, 11440 - 피보나치 수의 제곱의 합, 11778 - 피보나치 수와 최대공약수 모종의 정리들을 알거나 규칙을 찾으면 평범한 피보나치 수 문제로 환원할 수 있다. 2086은 규칙을 찾아서 풀었고, 뒤의 두 개는 적당히 검색해서 풀었다. 17401 - 일하는 세포 보자마자 풀이는 보이는데, 구현이 좀 귀찮은 문제이다. 신경써야 할 점은 1. 같은 행렬을 거듭제곱하는 문제들과는 다르게 교환법칙이 통하지 않는다. 2. 주어진 행렬..

PS/오늘의 PS 2022.04.20

BOJ 11932 - 트리와 K번째 수

열심히 풀고 기여를 하러 갔는데, 다들 내 풀이와 방향성이 다른 것 같았다. 정해가 시간 복잡도 면에서도, 난이도 면에서도 조금 더 낫지만 내 풀이도 의미가 있다고 생각해 적어보려 한다. 해당 풀이는 7469 - K번째 수를 PST로 푸는 방법을 트리로 확장시켜 적용한다. 간단하게 요약을 하자면, 인덱스 순으로 세그트리를 \(N\)개 만든 후 \(R\)번째 세그트리에서 \(L-1\)번째 세그트리를 뺀 값으로 세그 이분탐색을 해서 K번째 수를 찾는다. (이 과정에서 배열의 각 수에 대해 좌표압축을 해 주어야 한다.) 세그 이분탐색이란 왼쪽 자식의 합과 K를 비교해 K가 크면 오른쪽, 그렇지 않으면 왼쪽으로 가는 작업을 반복하는 것을 말하며, 세그트리를 여러 개 만드는 것은 PST를 통해 수행할 수 있다. ..

PS/BOJ 2022.04.19

Codeforces Round #782 (Div. 2)

A. Red Versus Blue (0:02, +) R/(B+1)개와 R/(B+1)+1개를 적절히 배치해주면 된다. B. Bit Flipping (0:16, +) 앞에서부터 그리디하게 설정해주면 되는데.. 구현 미스가 나서 좀 오래 걸렸다. C. Line Empire (0:40, +) 끝 위치가 \(x\)라면, 그 전까지는 계속 옮겨주는 것이 최적이다. 이를 각 경우에 대해 계산해주면 된다. D. Reverse Sort Sum (1:06, +) 우선 주어진 배열의 평균을 통해 1의 개수를 구해준다. 이후, 뒤 원소부터 보며 자명하게 결정 -> 1의 개수에 따라 업데이트를 반복해주면 문제를 해결할 수 있다. Range Update Point Query 펜윅트리를 사용하면 \(O(NlogN)\)에 문제를 해..

PS/CP 2022.04.18