Gravatar
yrtiop
积分:2101
提交:309 / 808

Pro546  [HAOI 2011]问题A

easy tea,不过有点小作弊:想完以后看了 Asm.Def 学长的评论才确定自己的思路是对的,并不是很自信。

考虑转化题意,求最多的说真话的人。

注意到如果有 $a_i$ 个人比 $i$ 低,有 $b_i$ 个人比 $i$ 高,说明 $i$ 的成绩排名 $\in [a_i+1,n-b_i]$。

将区间视作一条线段,然后把 $[l,r]$ 相同的线段合并,给 $[l,r]$ 这条线段赋权。本题就转化为了最大线段带权覆盖问题。$\rm dp + std::map$ 可以 $\mathcal O(n\log n)$ 地解决这个问题。

小陷阱:如果有超过 $r-l+1$ 个人的成绩排名 $\in [l,r]$,那么 $[l,r]$ 的权值为 $r-l+1$,$\rm dp$ 的时候取 $\rm min$ 判断一下就好了。


2023-03-02 16:50:21    
我有话要说
暂无人分享评论!