AtCoder Beginner Contest 476_C - Third Largest Number
C - Third Largest Number,传送门,点我
题面如图

这道题是一道非常经典的题,他就是输出第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" ;
}

浙公网安备 33010602011771号