Avatar
“”

一个兴趣使然的追梦人

▼

AtCoder Beginner Contest 476_C - Third Largest Number

C - Third Largest Number,传送门,点我
题面如图
image

这道题是一道非常经典的题,他就是输出第k大数的模型,这种题你只要用优先队列,开小根堆,维护这个优先队列,即当其大小大于k时弹出堆顶,因为堆顶放的是k个元素里面最小的,(那换句话说堆顶不就是第k大的元素吗)大的元素就在其下面,弹出后 输出堆顶就可以了。

\(ACcode\)

void solve() {
 int n ;
 cin >> n ;
 vector<int>a(n) ;
 for(int i =0 ;i < n;i++){
    cin >> a[i] ;
 }
 priority_queue<int,vector<int>,greater<int>>pq ;
 for(int i = 0;i < 2;i++)pq.push(a[i]) ;
 for(int i = 2;i < n;i++){
    pq.push(a[i]) ;
    if(pq.size() > 3){
        pq.pop() ;
       
    }
    cout << pq.top() << "\n" ;
 }

posted @ 2026-09-22 20:46  hermanO  阅读(10)  评论(0)    收藏  举报