文章
14
粉丝
80
获赞
0
访问
10.0k
priority_queue<int,vector<int>,greater<int>> q;
int weight+=q.top();
第二行语法有问题吗?
语法可以的,不过应该加的不是q.top()而是temp2
因为这个是优先队列,不是说temp2入栈就会在栈顶,这里要注意
yanmo : 回复 snake: 好的,蟹蟹
//完整代码,1544合并果子
#include<bits/stdc++.h> using namespace std; int main(){ int n,temp1,temp2; int weight=0; cin>>n; priority_queue<int,vector<int>,greater<int>> q; for(int i=0;i<n;i++){ cin>>temp1; q.push(temp1); } for(int i=1;i<=n-1;i++){ int a=q.top(); q.pop(); int b=q.top(); q.pop(); temp2=a+b; q.push(temp2); weight+=q.top(); } cout<<weight<<endl; }
登录后发布评论
语法可以的,不过应该加的不是q.top()而是temp2
因为这个是优先队列,不是说temp2入栈就会在栈顶,这里要注意
//完整代码,1544合并果子
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,temp1,temp2;
int weight=0;
cin>>n;
priority_queue<int,vector<int>,greater<int>> q;
for(int i=0;i<n;i++){
cin>>temp1;
q.push(temp1);
}
for(int i=1;i<=n-1;i++){
int a=q.top();
q.pop();
int b=q.top();
q.pop();
temp2=a+b;
q.push(temp2);
weight+=q.top();
}
cout<<weight<<endl;
}