Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Apr 16, 2025

🧷 문제 링크

https://www.acmicpc.net/problem/1060

🧭 풀이 시간

50분

👀 체감 난이도

✏️ 문제 설명

정수 집합 $S$가 주어졌을 때, 다음 조건을 만족하는 구간 $[A, B]$좋은 구간이라고 한다.

  • $A$$B$는 양의 정수이고 $A<B$를 만족한다.
  • $A \le x \le B$를 만족하는 모든 정수 $x$가 집합 $S$에 속하지 않는다.

정수 $x$를 포함하는 좋은 구간의 개수가 정수 $y$를 포함하는 좋은 구간의 개수보다 작으면, $x$$y$보다 더 좋다고 한다.

집합 $S$가 주어지면, 모든 양의 정수를 더 좋은 수가 앞에 오도록 정렬했을 때 앞에 오는 수를 $N$개 구해보자.

🔍 풀이 방법

[사용한 알고리즘]

  • 우선순위 큐

$S$에서 인접한 두 수 $L, R$에 대해, $L \le x \le R$인 정수 $x$를 포함하는 좋은 구간의 개수는 $(R-x+1) \times (x-L+1)$이다.
이 식은 $x$에 대한 이차식으로, 위로 볼록한 그래프 형태를 가진다.
=> $L, R$에서부터 점점 중점에 가까워질수록 좋은 구간의 개수가 더 많아진다.

$S$의 인접한 두 수로 인해 생기는 모든 구간들에 대해, 일단 양 끝 원소만 우선순위 큐에 담아둔다.
큐에서 뺄 때마다 그 다음 수를 다시 넣어주면 된다.

⏳ 회고

길이가 1인 구간은 세면 안 되는데 문제를 제대로 안 읽고 풀어서 못 봤다

@oncsr oncsr self-assigned this Apr 16, 2025
@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Apr 16, 2025
@ShinHeeEul ShinHeeEul merged commit fe4be4f into main Apr 16, 2025
1 check passed
@lkhyun
Copy link
Contributor

lkhyun commented Apr 17, 2025

좋은 혁준 ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants