题目描述
给定 N 个加号、M 个减号以及 N + M + 1 个整数 A1, A2, · · · , AN+M+1,小 明想知道在所有由这 N 个加号、M 个减号以及 N + M + 1 个整数凑出的合法的 后缀表达式中,结果最大的是哪一个?

请你输出这个最大的结果。
例如使用1 2 3 + -,则 “2 3 + 1 -” 这个后缀表达式结果是 4,是最大的。

输入
第一行包含两个整数 N 和 M。
第二行包含 N + M + 1 个整数 A1, A2, · · · , AN+M+1。

输出
输出一个数,表示答案
样例输入
1 1
1 2 3
样例输出
4
提示
对于所有评测用例,0 ≤ N, M ≤ 100000,−109 ≤ Ai
思路:今天之前还以为去年的思路没啥问题呢。。
这个题目的一大坑点是后缀表达式是可以加括号的,意思也就是,可以将负号变为正号。
例如:n=1,m=1,数组元素依次为-1,-2,3,最终结果为3-((-1)+(-2))。而不是3+(-1)-(-2)。
明白了这一点我们就要考虑负数和所有数的关系了。
如果有负数存在的话:
①如果负数的个数num不等于n+m+1的话,我们是可以通过加括号的形式,将所有的减号变为加号的。
②如果负数的个数num等于n+m+1的话,肯定会留出一个负数来,无法通过加括号的形式变为正的,那么就只能加上这个负数,贪心去想,肯定是负数中最大的那个。
如果说没有负数的话,那么只能减去最小的那个数,剩下的就可以通过加括号的形式变为加了。
代码如下:

#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxx=2e5+100;
ll a[maxx];
int n,m;int main()
{int num=0;scanf("%d%d",&n,&m);for(int i=1;i<=n+m+1;i++) scanf("%lld",&a[i]);sort(a+1,a+1+n+m+1);ll sum=0;for(int i=1;i<=n+m+1;i++) {sum+=a[i];if(a[i]<0) num++;}if(m==0) cout<<sum<<endl;else{if(num){if(num!=n+m+1) for(int i=1;i<=num;i++) sum-=2ll*a[i];else for(int i=1;i<num;i++) sum-=2ll*a[i];}else sum-=2ll*a[1];cout<<sum<<endl;}return 0;
}

努力加油a啊,(o)/~

[蓝桥杯][2019年第十届真题]后缀表达式(正解!!)相关推荐

  1. [蓝桥杯][2019年第十届真题]扫地机器人(二分+贪心)

    题目描述 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所 示. 走廊内部署了 K 台扫地机器人,其中第 i 台在第 Ai 个方格区域中. 已知扫地机器人每分钟可以移动到左右相邻的方 ...

  2. [蓝桥杯][2019年第十届真题]糖果(状压dp)

    题目描述 糖果店的老板一共有 M 种口味的糖果出售.为了方便描述,我们将 M 种 口味编号 1 ∼ M. 小明希望能品尝到所有口味的糖果.遗憾的是老板并不单独出售糖果,而 是 K 颗一包整包出售. 幸 ...

  3. [蓝桥杯][2019年第十届真题]修改数组(并查集)

    题目描述 给定一个长度为 N 的数组 A = [A1, A2, · · · AN ],数组中有可能有重复出现 的整数. 现在小明要按以下方法将其修改为没有重复整数的数组.小明会依次修改 A2,A3,· ...

  4. [蓝桥杯][2019年第十届真题]等差数列

    题目描述 数学老师给小明出了一道等差数列求和的题目.但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数. 现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有 几项? 输入 ...

  5. [蓝桥杯][2019年第十届真题]外卖店优先级(模拟)

    题目描述 "饱了么"外卖系统中维护着 N 家外卖店,编号 1 ∼ N.每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0. 每经过 1 个时间单位,如果外卖店没有订单 ...

  6. [蓝桥杯][2019年第十届真题c/c++B组]迷宫(寻找路径bfs及文件输入输出)

    试题 E: 迷宫 1.问题描述 2.思路详解 3.AC代码 1.问题描述 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方. 010000 000100 00100 ...

  7. [蓝桥杯][2019年第十届真题c/c++B组]后缀表达式(解释sum -= 2*a[i])

    后缀表达式 给定 N 个加号.M 个减号以及 N + M + 1个整数 A1 , A2 , · · · , AN+M+1 ,小明想知道在所有由这 N 个加号.M 个减号以及 N + M + 1个整数凑 ...

  8. [蓝桥杯][2019年第十届真题c/c++B组]完全二叉树的权值

    题目描述 给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下.从左到右的顺序依次是 A1, A2, · · · AN,如下图所示: 现在小明要把相同深度的节点的权值加在一起, ...

  9. [蓝桥杯][2019年第十届真题]-----外卖店优先级

    题目描述: "饱了么"外卖系统中维护着 N 家外卖店,编号 1 ∼ N.每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0. 每经过 1 个时间单位,如果外卖店没有订 ...

最新文章

  1. cookie、 sessionStorage 、localStorage之间的区别和使用
  2. php代码注释处理类库,php代码注释
  3. 图片标签|| 列表标签||链接标签||div和span|| 语义化标签
  4. 腾讯2013实习生笔试题+答案1-5aadaa 6-10adbcc 11-15 acacc16-20 bbddc
  5. python scatter 简书_写给 Pythonist 的 Spacemacs 入门指北
  6. 微课|玩转Python轻松过二级(3.4节):集合操作与应用
  7. 【jQuery】jQuery操作input的聚焦与全选其内容
  8. Java CopyOnWrite容器
  9. 2020-2022年最全湖南省矢量数据(路网含城市道路、铁路(包括地铁、轻轨)高速、国道、省道、县道、乡道+几百万个poi数据+省市县乡镇行政区划+河流水系网+建筑轮廓+30米dem等shp数据
  10. ClustalX进行多序列比对流程
  11. fms2.0视频服务器系统,[FMS]adobe FMS(flash media server )服务器安装过程
  12. c语言pow函 新闻,c语言pow函数(C语言pow函数)
  13. 前端leader找我谈心:我是如何从刚毕业的前端菜鸟一步步成长为前端工程师的?...
  14. linux 释放 文件缓存,Linux中手动释放缓存的方法
  15. 中国科学家或揭开生物第六感之谜
  16. 【华为OD机试模拟题】用 C++ 实现 - 英文输入法单词联想 or 英文输入法(2023.Q1)
  17. kronecker积与hadamard积
  18. 芝麻信用网页api php,谈谈php对接芝麻信用踩的坑
  19. 【操作系统】-同步互斥-【2013真题】-某博物馆最多容纳500人...
  20. jsp新webshell的探索之旅

热门文章

  1. Android—多版本主要适配内容
  2. 清理临时目录mysql,把MySQL的临时目录迁移到内存上-临时文件夹
  3. java el表达式 导航规则_javaweb之EL表达式语言
  4. ubuntu 20.04 阿里源_Ubuntu 18.04 安装CUDA 更新内核源出错解决方案
  5. 学生电脑哪个牌子好_常亮补光灯哪个牌子好服务至上
  6. java打印整个向量_Java中Vector向量的用法
  7. 递归循环一个无限极数组_理解递归、尾调用优化和蹦床函数优化
  8. java 学习代码库_java 学习4
  9. 【跟着我们学Golang】Go语言全平台安装
  10. 你根本不懂rebase-使用rebase打造可读的git graph