PS/오늘의 PS

오늘의 PS (6) - 220508

leo020630 2022. 5. 9. 15:15

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\)가 \(B\)에서 가장 처음으로 등장하는 위치, \(D_i\)를 \(B_i\)가 \(A\)에서 처음으로 등장하는 위치로 정의하자. 등장하지 않을 시 INF값으로 정의한다. 그러면 주어지는 쿼리가 yes임은 \(max(C_1..C_x)<=y\)이며 \(max(D_1..D_y)<=x\) 임과 동치이다. 

 

F. One Fourth (1:13, +2) *2044

풀이는 간단하다. 각 정점에 대해 넓이로 이분탐색을 돌려서 넓이/4에 가장 가까운 넓이를 찾으면 되는데 구현 미스로 인해 시간을 너무 많이 썼다. 기하 구현 속도가 많이 느린 것 같다. 연습해야지..

 

Codeforces Round #789 (Div. 1)

A. Tokitsukaze and Strange Inequality (0:05, +)

b, c를 고정한 후 누적합 배열로 가능한 a, d의 개수를 체크하면 된다.

 

B. Tokitsukaze and Meeting (1:16, +)

열은 쉽게 관리할 수 있는데, 행이 문제다. 최근 \(M\)개에 대한 누적합을 들고 있으면 첫 행의 만족 여부는 알 수 있다. 다음 행부터의 개수는 DP를 이용해 \(M\)턴 전의 상태를 불러오면 된다. 어려운 문제는 아닌데, C를 잡다 와서 솔브 시간이 많이 늦었다.

 

C. Tokitsukaze and Two Colorful Tapes (1:51, +1)

우선 주어진 배열을 Permutation Cycle으로 분리해야 됨은 쉽게 알 수 있는데, 그 뒤로가 막막하다. 뭔가 찍어서 맞춰야 할 것 같은데, 찍은 규칙들이 다 틀려서 종료 직전에야 겨우 맞았다. 답은 각 사이클에 대해 \(floor(L/2)\)를 모두 더해준 후, 그 횟수 만큼 길이 2인 사이클을 만든다고 생각하면 된다. 이런걸 다들 어떻게 빨리 생각하지?

 

앳코더는 계속 오르는데 사이트 특성상 속도가 그렇게 빠르지 않은 것 같아 문제고, 코포는 오렌지만 가면 너무 빨리 떨어지는 것 같아 문제다. 이번엔 겨우 생존하긴 했는데.. Div. 1 버츄얼을 돌려야 하는지 고민이다.

 

'PS > 오늘의 PS' 카테고리의 다른 글

오늘의 PS (8) - 220611  (0) 2022.06.11
오늘의 PS (7) - solved.ac D3 달성  (0) 2022.05.25
오늘의 PS (5) - 220501~7  (0) 2022.05.08
오늘의 PS (4) - 220423  (0) 2022.04.24
오늘의 PS (3) - 220420  (2) 2022.04.20