我知道暴力模拟堆会TLE但是有大佬能帮我再优化一下吗

学术版

@[庄邦宇](/space/show?uid=81364) 大佬啊,你写的不是堆啊,你是更新一次排序一次,单次更新复杂度为nlogn,如果是堆的话单次更新复杂度为logn 推荐一发stl优先队列 ```cpp #include<iostream> #include<cstdio> #include<queue> using namespace std; int ad[200005],nu[200005],m,n,a,b,c,d,jsq,cnt,zcq; priority_queue<int> xgd; priority_queue<int> dgd; void hs(int x) { cout<<-xgd.top()<<endl; zcq=-xgd.top(); dgd.push(zcq); xgd.pop(); cnt++; jsq=ad[cnt]; if(jsq==x) { hs(x); } } int main() { cin>>m>>n; for(a=1;a<=m;a++) { cin>>nu[a]; } for(a=1;a<=n;a++) { cin>>ad[a]; } jsq=ad[1]; cnt=1; for(a=1;a<=m;a++) { if(cnt!=1) { zcq=dgd.top(); } else { zcq=-99999999; } if(nu[a]<zcq) { xgd.push(-zcq); dgd.pop(); dgd.push(nu[a]); } else { xgd.push(-nu[a]); } if(a==jsq) { hs(jsq); } } } ```
by ztz11 @ 2018-07-12 10:31:08


@[ztz11](/space/show?uid=52176) 奇怪变量名重出江湖
by XiaoX @ 2018-07-12 10:32:29


|