DOJ logoDOJ
题目
最近添加的题目收藏的题目
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

Laboratory

返回题目

题解

먼저 모든 미생물의 번호를 (Bi,i)(B_i,i)(Bi​,i)의 사전순으로 정렬한 순열 p1,p2,…,pNp_1,p_2,\ldots,p_Np1​,p2​,…,pN​을 구한다. 어떤 연구 표본을 고르더라도 성장 계수에 따른 순서는 이 순열의 부분 수열이다.

일차 ttt를 고정하고, 순열의 각 위치에 쌍 Xj(t)=(Apj+Bpjt,pj)X_j(t)=(A_{p_j}+B_{p_j}t,p_j)Xj​(t)=(Ap를 놓자. 두 쌍은 첫 번째 값이 작은 쪽을 먼저 비교하고, 첫 번째 값이 같으면 두 번째 값이 작은 쪽을 먼저 비교한다. 고른 미생물들의 개체 수 순서까지 같으려면, 고른 위치들의 가 이 비교에 따라 엄격히 증가해야 한다. 따라서 일차에 고를 수 있는 최대 종류 수는 이 쌍들의 최장 증가 부분 수열 길이이다. 개체 수만 비교하면 동률일 때 번호로 정렬한다는 조건을 놓치므로 반드시 번호도 함께 비교한다.

최장 증가 부분 수열은 길이별로 가능한 마지막 쌍의 최솟값을 유지하는 방법으로 구한다. 각 쌍을 차례로 보면서, 마지막 쌍들의 배열에서 현재 쌍 이상인 첫 위치를 이분 탐색해 값을 교체한다. 그런 위치가 없다면 뒤에 추가한다. 이 판정에는 O(Nlog⁡N)O(N\log N)O(NlogN) 시간이 걸린다.

어느 날 조건을 만족한 표본은 그 이후에도 조건을 만족한다. 따라서 최장 증가 부분 수열의 길이가 KKK 이상인지 판정하는 결과는 일차가 증가하면서 거짓에서 참으로만 바뀐다. U=109U=10^9U=109라고 하자. 000일차에 조건을 만족하면 바로 000을 출력한다. 그렇지 않고 UU일차에도 길이가 보다 작다면 을 출력한다. 나머지 경우에는 에서 조건을 처음 만족하는 일차를 이분 탐색한다.

처음 정렬하는 데 O(Nlog⁡N)O(N\log N)O(NlogN) 시간이 걸리고, 판정을 O(log⁡U)O(\log U)O(logU)번 수행하므로 전체 시간 복잡도는 O(Nlog⁡Nlog⁡U)O(N\log N\log U)O(NlogN, 공간 복잡도는 이다.

증명

성장 계수 정렬에서 앞에 오는 미생물 ppp와 뒤에 오는 미생물 qqq를 생각하자. 이때 Bp≤BqB_p\leq B_qBp​≤B이다. 두 미생물의 개체 수 차이 는 가 증가해도 감소하지 않는다.

Solution written by GPT6

j​
​
+
Bpj​​t,pj​)
Xj(t)X_j(t)Xj​(t)
ttt
U
KKK
-1
[0,U][0,U][0,U]
log
U
)
O(N)O(N)O(N)
q
​
D(t)=(Aq+Bqt)−(Ap+Bpt)D(t)=(A_q+B_qt)-(A_p+B_pt)D(t)=(Aq​+Bq​t)−(Ap​+Bp​t)
ttt

ttt일차에 개체 수 정렬에서도 ppp가 먼저 온다면 D(t)>0D(t)>0D(t)>0이거나, D(t)=0D(t)=0D(t)=0이고 p<qp<qp<q이다. 더 늦은 일차에는 차이가 커지거나 같으므로 두 경우 모두 ppp가 계속 먼저 온다. 따라서 어떤 표본이 한번 조건을 만족하면 이후에도 만족하며, 판정은 단조적이다.

성장 계수가 서로 다른 두 미생물에서 Bp<BqB_p<B_qBp​<Bq​이면, UUU일차에 D(U)=(Aq−Ap)+(Bq−Bp)U≥(1−109)+109=1D(U)=(A_q-A_p)+(B_q-B_p)U\geq (1-10^9)+10^9=1D(U)=(Aq​−Ap​)+(Bq​이다. 따라서 UUU일차에는 두 미생물의 순서가 반드시 일치한다. 성장 계수가 같으면 개체 수의 차이가 변하지 않으므로 순서의 일치 여부도 변하지 않는다. 그러므로 어떤 일차에라도 가능한 표본은 UUU일차에도 가능하다. UUU일차에 필요한 크기의 표본이 없다면 다른 어느 날에도 없고, 있다면 가장 빠른 일차는 [0,U][0,U][0,U]에 있다.

고른 미생물을 성장 계수 순서대로 나열하면 p1,p2,…,pNp_1,p_2,\ldots,p_Np1​,p2​,…,pN​의 부분 수열이 된다. 이 표본의 개체 수 정렬 순서가 같다는 것은 대응하는 (Ai+Bit,i)(A_i+B_it,i)(Ai​+Bi​t,i) 쌍들이 엄격히 증가한다는 것과 동치이다. 따라서 가능한 표본과 증가 부분 수열은 서로 정확히 대응한다.

최장 증가 부분 수열을 구할 때 같은 길이의 부분 수열들 중 마지막 쌍이 작은 것을 남겨 두어도, 이후에 붙일 수 있는 쌍이 줄어들지 않는다. 현재 쌍 이상인 첫 마지막 쌍을 교체하면 그보다 짧은 부분 수열을 현재 쌍으로 늘릴 수 있고, 더 긴 부분 수열은 현재 쌍으로 끝날 수 없다. 이 불변식을 유지하면 배열의 길이는 정확히 최장 증가 부분 수열 길이가 된다. 따라서 판정은 정확하며, 단조적인 정확한 판정에 이분 탐색을 적용하면 요구한 가장 빠른 일차를 얻는다.

−
Bp​)U≥
(1−
109)+
109=
1