把楼上的代码补一下。
#include "bits/stdc++.h" using namespace std; using u32 = uint32_t; int main() { u32 t; cin >> t; for (u32 i = 0; i != t; ++i) { cout << "case #" << i << ":\n"; u32 n; cin >> n; priority_queue<u32, vector<u32>, greater<>> snacks; for (u32 i = 0; i != n; ++i) { char order; cin >> order; if (order == 'B') { u32 p; cin >> p; snacks.push(p); } else { cout << snacks.top() << '\n'; snacks.pop(); } } } }
题解
using namespace std; int T,n; priority_queue, greater\ > Q; int main() { cin>>T; for(int step=0;step>n; printf(“case #%d:\n”,step); while(!Q.empty()) Q.pop(); for(int i=1;i<=n;i++) { string aa; cin>>aa; if(aa[0]==’B’) { int xx;cin>>xx; Q.push(xx); } else { int tmp=Q.top();Q.pop(); cout<<tmp<<endl; } }
} return 0; }
这题明显考优先队列(堆),其他方法也能做但麻烦
priority_queue, greater\ > Q; 从小到大排序的优先队列这么写
编号是”case #i:” 一行输出一个价格,不是一行输出本轮操作的所有价格
把楼上的代码补一下。
题解
include
using namespace std;
int T,n;
priority_queue, greater\ > Q;
int main()
{
cin>>T;
for(int step=0;step>n;
printf(“case #%d:\n”,step);
while(!Q.empty()) Q.pop();
for(int i=1;i<=n;i++)
{
string aa;
cin>>aa;
if(aa[0]==’B’)
{
int xx;cin>>xx;
Q.push(xx);
}
else
{
int tmp=Q.top();Q.pop();
cout<<tmp<<endl;
}
}
}
return 0;
}
这题明显考优先队列(堆),其他方法也能做但麻烦
priority_queue, greater\ > Q;
从小到大排序的优先队列这么写
编号是”case #i:”
一行输出一个价格,不是一行输出本轮操作的所有价格