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

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

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

candypinkmagicholeflipflop

返回题目

题解

동전을 XiX_iXi​의 오름차순으로 정렬하자. 정렬된 순서에서 iii번째 동전의 가중치를 wiw_iwi​라고 하자.

서로 다른 두 동전이 모두 앞면을 보이면 보이는 수의 합은 항상 SSS 이상이고, 모두 뒷면을 보이면 항상 SSS 미만이다. 앞면과 뒷면이 이웃할 때는 뒷면 동전의 XXX가 앞면 동전의 XXX보다 클 때에만 조건이 성립한다.

앞에서 iii개의 동전만 보았을 때 그중 뒤집은 동전의 수를 fif_ifi​라고 하자. 원의 일부분에 있는 뒤집은 동전의 양옆은 서로 다른, 더 작은 XXX를 가진 뒤집지 않은 동전이다. 따라서 전체 원이 모두 이 부분에 포함되는 예외를 제외하면, 이 부분에서 뒤집지 않은 동전은 뒤집은 동전보다 적어도 하나 더 많다. 즉, 가능한 선택은 다음을 만족한다.

fi≤⌊i−12⌋(1≤i<N),fN≤⌊N2⌋.f_i \le \left\lfloor \frac{i-1}{2} \right\rfloor \quad (1 \le i < N), \qquad f_N \le \left\lfloor \frac{N}{2} \right\rfloor.fi​≤⌊2i

이 조건은 충분하기도 하다. 뒤집지 않은 동전을 XXX의 오름차순으로 u1,u2,…,umu_1,u_2,\ldots,u_mu1​,u2​,…,u, 뒤집은 동전을 라 하자. 이면 의 순서로 배치할 수 있다. 이면 를 원형으로 배치할 수 있다. 위의 접두 구간 조건으로부터 이웃한 모든 앞면·뒷면 쌍에서 뒷면 동전의 가 더 크다는 것을 알 수 있다.

따라서 각 접두 구간에 대해 뒤집은 동전 수의 상한만 지키면서 가중치 합을 최대로 만들면 된다. 동전을 정렬된 순서대로 처리하면서 wiw_iwi​를 최소 힙에 넣고, 힙 크기가 현재 상한을 초과하면 가장 작은 가중치를 제거한다. 각 단계에서 유지되는 선택은 해당 접두 구간 제약을 만족하는 최대 가중치 선택이다. 모든 원소를 처리한 후 힙에 남은 값의 합이 정답이다.

정렬과 힙 연산에 O(Nlog⁡N)O(N\log N)O(NlogN) 시간, O(N)O(N)O(N) 공간이 필요하다.

Solution written by GPT6

−
1
​
⌋
(
1
≤
i<
N),fN​≤
⌊2N​⌋.
m
​
v1,v2,…,vkv_1,v_2,\ldots,v_kv1​,v2​,…,vk​
m>km>km>k
u1,v1,u2,v2,…,uk,vk,uk+1,uk+2,…,umu_1,v_1,u_2,v_2,\ldots,u_k,v_k,u_{k+1},u_{k+2},\ldots,u_mu1​,v1​,u2​,v2​,…,uk​,vk​,uk+1​,uk+2​,…,um​
m=km=km=k
u1,v1,u2,v2,…,uk,vku_1,v_1,u_2,v_2,\ldots,u_k,v_ku1​,v1​,u2​,v2​,…,uk​,vk​
XXX