问题;给定N个加号,M个减号以及N+M+1个整数,A1+A2+…+Am+An+1,小明想知道在所有由这n个加号,M个减号以及N+M+1个整数凑出的合法的后缀表达式中,结果最大的是哪一个?
请输出这个最大的结果。
假如使用1 2 3+ -,则“2 3 + 1 -”这个后缀表达式的结果是4,是最大的。
输入格式:第一行包含两个整数N和M
第二行包含N+M+1个整数 A1,A2,…AN+AM+1
输出格式:数出一个整数代表答案。
样例输入
1 1
1 2 3
样例输出
4
后缀表达式:二叉树例如45+6-78+ -13;目标使得结果最大
此模型与栈类似 变形:4+5=9 ;9-6=3 ; 378+;7+8=15;3-15=-12
还可转换为二叉树
举例:给三个数字1 2 3 和两个减号,求最大结果。
常规思路;3-1-2=0;
按后缀表达式:3-(1-2)=4
后缀表达式可以加负号,进行构造
n个减号最多可以减n个·数,最少可以减1个数
假设给定n个减号,可以进行构造为1-n之间任意不等个减号

#include<iostream>
#include<algorithm>
using namespace std;const int N=200010;  //数据范围 int n,m;  //n表示加号,m表示减号
int a[N];int main()
{scanf("%d%d",&m,&n); int k=n+m+1;int cnt=0;  //k表示总数 ,cnt负数个数 int sum=0;for(int i=0;i<k;i++){scanf("%d",&a[i]);sum+=a[i];  //总和 if(a[i]<0)cnt++;}sort(a,a+k);  //排序 if(a[0]>=0)  //负数个数不为0 {if(n)sum-=2*a[0];} else{for(int i=0;i<k&&a[i]<0&&n>0;i++)  //最小的负数在0的位置 ,从最小的负数枚举且负号没有用完 {sum-=a[i]*2;  //减去负数,相当于加上 ,一开始为sum+a,要使其变为sum—-a,就需要sum-2a.n--;  //减完减少负号 } } cout<<a[0]<<endl;return 0;
}

给定N个加号,M个减号以及N+M+1个整数,A1+A2+...+Am+An+1,小明想知道在所有由这n个加号,M个减号以及N+M+1个整数凑出的合法的后缀表达式中,结果最大的是哪一个?相关推荐

  1. 数据结构与算法——给定整数A1,A2,....An,....(可能有负数),求该数据序列的最大子序列的和

    求最大的子序列和问题 给定整数A1,A2,....An,....(可能有负数),求该数据序列的最大子序列的和. 比如:输入-2, 11, -4, 13, -5, -2: 答案是20(11,-4,13三 ...

  2. 蓝桥杯真题 求和 给定 n 个整数 a1· a2, · · · , an,求它们两两相乘再相加的和

    求和 问题描述 给定 n 个整数 a1, a2, · · · , an ,求它们两两相乘再相加的和,即: S=a1·a2+a1·a3+···+a1·an+a2·a3+···+an-2·an+an-1· ...

  3. 【蓝桥杯06】:给定小明的城堡图,请问,水的高度依次为1,2,3,....,H时,有多少块积木要被水淹。

    问题描述: 小明用积木搭了一个城堡.         为了方便,小明在搭的时候用的是一样大小的正方体积本,搭在了一个n行m列的方格图上,每个积木正好占据方格图的一个小方格.         当然,小明 ...

  4. 输入第一行是一个整数n,代表小明做记录的天数 第二行是n个实数,代表每天早上的气温 输出 一个实数(保留1位小数),表示最低气温

    问题 Z: 天气 时间限制: 1 Sec 内存限制: 128 MB 提交: 1272 解决: 935 [提交] [状态] [讨论版] [命题人:admin] 题目描述 小明是个南方人,感觉北方的冬天特 ...

  5. 小明有N(4≤N≤60)个玻璃球,他想将N个玻璃球拆分成若干份(份数≥2,且每份中的数量互不相等),从而使拆分后的每份玻璃球数量的乘积最大。请你编写程序帮助小明计算出最大乘积是多少...

    小明想要将N个玻璃球拆分成若干份,使得每份的玻璃球数量的乘积最大.为了计算出最大的乘积,你可以使用贪心算法. 首先,将N个玻璃球拆分成若干份,使得每份的玻璃球数量的乘积最大,意味着每份的玻璃球数量应尽 ...

  6. 给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数

    给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数.            1.在文件中至少存在这样一个数?            2.如果有足够的内存,如何处理? ...

  7. 给定3个数字,求出这3个数字中的最大数,并输出最大数

    给定3个数字,求出这3个数字中的最大数,并输出最大数 代码如下: import java.util.Scanner;/*给定3个数字,求出这3个数字中的最大数,并输出最大数 */ public cla ...

  8. 用10元,20元,50元三种币值的纸币凑出1000元,一共有多少种组合(C++实现)三种思路,两种实现

    今天做了中金所的笔试题,被一道题卡住了.题目意思是: 用10元,20元,50元三种币值的纸币凑出1000元,一共有多少种组合? 当时一眼看上去分析了一下,以为是背包问题,类似于爬楼梯,于是直接带了爬楼 ...

  9. 给定3个数字,求出这3个数字中的最大值,并将最大值输出

    给定3个数字,求出这3个数字中的最大值,并将最大值输出. public class T3 {public static void main(String[] args) {int a,b,c,max; ...

最新文章

  1. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解
  2. axios请求接口http_Vue使用Axios实现http请求以及解决跨域问题
  3. 完美解决vue项目中弹出框滑动时,内部页面也跟着滑动问题
  4. Windows 7系统如何设置锁定计算机快捷方式【技术小摘】
  5. JAVA循环结构学校上机经常遇到的几题 笔记
  6. 2021北京高考英语口试成绩查询,2021北京高考英语口语怎么考?2021英语增加口语考试是全国?...
  7. 智能时代 软件赋能——2017中国软件技术大会
  8. vc6.0 matlab混合编程,matlab2010 + vc6.0混合编程实例(调用dll)
  9. mysql数据库基础 博客园_MySQL数据库基础
  10. 开源 | 近期遥感航空影像的检索、检测、跟踪、计数、分类相关工作
  11. c语言for嵌套循环语句,关于for嵌套循环语句的疑问
  12. 用matlab进行拉普拉斯滤波,[转载]matlab滤波技术及区域处理---线性滤波
  13. stm32呼吸灯程序_STM32寄存器操作点亮LED灯
  14. python输入若干个数字求和
  15. 超大图片的缩放算法(撑爆内存的那种)
  16. 浙大计算机就业方向,浙大四大 王牌专业,毕业后工作待遇高,发展前景非常广阔...
  17. 输入苹果的单价和购买的数量,计算总价,分别显示总价的整数部分和四舍五入后的整数部分
  18. 手把手教会你视频转文字怎么弄,这个方法建议收藏备用
  19. ISO26262功能安全 安全等级和量化指标
  20. MongoDB简单学习小总结

热门文章

  1. python教程视频哪个好-Python入门视频哪个好?
  2. 微软不愿意提及的软肋:Win10的语音识别
  3. 长虹发布AI 3.0 引领电视行业跨入AI3.0时代
  4. String.format()用法
  5. mac地址容量的作用_IP地址冲突网络故障排查案例
  6. iview关闭抽屉弹层时清空Select弹框高亮样式
  7. 51单片机微波炉c语言程序,基于51单片机的微波炉控制C源程序.doc
  8. hbase1.1.1 连接集群_HBase-1.2.1集群搭建
  9. Vue中条件判断 v-if 、v-show
  10. 【数组】牛客网:调整数组顺序使奇数位于偶数前面(一)