1 条题解
-
0
解析:若想结果最大,优先选小的计算,若想结果最小,优先选大的计算; 使用优先队列存储数;
#include <bits/stdc++.h> using namespace std; int n; priority_queue <int> qd;//大根堆 priority_queue <int,vector<int>,greater<int>> qx;//小根堆 int main() { cin>>n; for(int i=1;i<=n;i++){ int x; cin>>x; qd.push(x); qx.push(x); } int mi,mx; for(int i=1;i<n;i++){ //大根堆 mx=qd.top();//取最大值 qd.pop();//弹出最大值 mx*=qd.top();//乘以次大值 mx++;//加1 qd.pop();//弹出次大值 qd.push(mx);//压入计算结果 //小根堆 mi=qx.top();//取出最小值 qx.pop();//弹出最小值 mi*=qx.top();//乘以次小值 mi++;//加1 qx.pop();//弹出次小值 qx.push(mi);//压入结果 } cout<<qx.top()-qd.top();//输出极差 return 0; }
- 1
信息
- ID
- 611
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者