【题解】数列极差

数列极差

https://ac.nowcoder.com/acm/contest/950/F

Solution

首先考虑有三个正整数,且
那么将会有三种不同的组合方法:

显然先取两个小数最后结果最大,取两个大数结果最小。
所以只需要维护一个大根堆和一个小根堆分别操作,直到两个堆内都只剩一个数,再将两者相减即为此题答案。

Code

#include <cstdio>
#include <queue>

std::priority_queue<int> gq;
std::priority_queue<int, std::vector<int>, std::greater<int> > lq;

int main() {
  int n, x;
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &x);
    gq.push(x), lq.push(x);
  }
  while (gq.size() > 1) {
    int a = gq.top(); gq.pop();
    int b = gq.top(); gq.pop();
    gq.push(a * b + 1);
  }
  while (lq.size() > 1) {
    int a = lq.top(); lq.pop();
    int b = lq.top(); lq.pop();
    lq.push(a * b + 1);
  }
  printf("%d\n", lq.top() - gq.top());
  return 0;
}
全部评论
tql
1 回复 分享
发布于 2019-10-15 18:05

相关推荐

不愿透露姓名的神秘牛友
06-10 15:24
高考前一晚在OPPO手机上设置了早上5:30的闹钟,然而闹钟并未按时响起。直到妈妈做好早餐后,在6:27打开手机才发现闹钟未触发,“气得早上饭都没吃”。资本家你赢了
永不遗忘:我来解释一下 :Oppo 手机晚上两点会自动进行系统更新,这个系统更新会重置掉所有设置好的闹钟,而且他也不会告诉你,而且只有 Oppo 会这样,华为苹果小米三星都不会
点赞 评论 收藏
分享
05-21 15:47
门头沟学院 Java
浪漫主义的虹夏:项目有亮点吗,第一个不是纯玩具项目吗,项目亮点里类似ThreadLocal,Redis储存说难听点是花几十分钟绝大部分人都能学会,第二个轮子项目也没体现出设计和技术,想实习先沉淀,好高骛远的自嗨只会害了自己
点赞 评论 收藏
分享
牛客ID:561366855:期望薪资多少?难以相信这简历找不到工作。说明二本电子信息专业想对口就业非常难。
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务