给定N个加号,M个减号以及N+M+1个整数,A1+A2+...+Am+An+1,小明想知道在所有由这n个加号,M个减号以及N+M+1个整数凑出的合法的后缀表达式中,结果最大的是哪一个?
问题;给定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个整数凑出的合法的后缀表达式中,结果最大的是哪一个?相关推荐
- 数据结构与算法——给定整数A1,A2,....An,....(可能有负数),求该数据序列的最大子序列的和
求最大的子序列和问题 给定整数A1,A2,....An,....(可能有负数),求该数据序列的最大子序列的和. 比如:输入-2, 11, -4, 13, -5, -2: 答案是20(11,-4,13三 ...
- 蓝桥杯真题 求和 给定 n 个整数 a1· a2, · · · , an,求它们两两相乘再相加的和
求和 问题描述 给定 n 个整数 a1, a2, · · · , an ,求它们两两相乘再相加的和,即: S=a1·a2+a1·a3+···+a1·an+a2·a3+···+an-2·an+an-1· ...
- 【蓝桥杯06】:给定小明的城堡图,请问,水的高度依次为1,2,3,....,H时,有多少块积木要被水淹。
问题描述: 小明用积木搭了一个城堡. 为了方便,小明在搭的时候用的是一样大小的正方体积本,搭在了一个n行m列的方格图上,每个积木正好占据方格图的一个小方格. 当然,小明 ...
- 输入第一行是一个整数n,代表小明做记录的天数 第二行是n个实数,代表每天早上的气温 输出 一个实数(保留1位小数),表示最低气温
问题 Z: 天气 时间限制: 1 Sec 内存限制: 128 MB 提交: 1272 解决: 935 [提交] [状态] [讨论版] [命题人:admin] 题目描述 小明是个南方人,感觉北方的冬天特 ...
- 小明有N(4≤N≤60)个玻璃球,他想将N个玻璃球拆分成若干份(份数≥2,且每份中的数量互不相等),从而使拆分后的每份玻璃球数量的乘积最大。请你编写程序帮助小明计算出最大乘积是多少...
小明想要将N个玻璃球拆分成若干份,使得每份的玻璃球数量的乘积最大.为了计算出最大的乘积,你可以使用贪心算法. 首先,将N个玻璃球拆分成若干份,使得每份的玻璃球数量的乘积最大,意味着每份的玻璃球数量应尽 ...
- 给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数
给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数. 1.在文件中至少存在这样一个数? 2.如果有足够的内存,如何处理? ...
- 给定3个数字,求出这3个数字中的最大数,并输出最大数
给定3个数字,求出这3个数字中的最大数,并输出最大数 代码如下: import java.util.Scanner;/*给定3个数字,求出这3个数字中的最大数,并输出最大数 */ public cla ...
- 用10元,20元,50元三种币值的纸币凑出1000元,一共有多少种组合(C++实现)三种思路,两种实现
今天做了中金所的笔试题,被一道题卡住了.题目意思是: 用10元,20元,50元三种币值的纸币凑出1000元,一共有多少种组合? 当时一眼看上去分析了一下,以为是背包问题,类似于爬楼梯,于是直接带了爬楼 ...
- 给定3个数字,求出这3个数字中的最大值,并将最大值输出
给定3个数字,求出这3个数字中的最大值,并将最大值输出. public class T3 {public static void main(String[] args) {int a,b,c,max; ...
最新文章
- python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解
- axios请求接口http_Vue使用Axios实现http请求以及解决跨域问题
- 完美解决vue项目中弹出框滑动时,内部页面也跟着滑动问题
- Windows 7系统如何设置锁定计算机快捷方式【技术小摘】
- JAVA循环结构学校上机经常遇到的几题 笔记
- 2021北京高考英语口试成绩查询,2021北京高考英语口语怎么考?2021英语增加口语考试是全国?...
- 智能时代 软件赋能——2017中国软件技术大会
- vc6.0 matlab混合编程,matlab2010 + vc6.0混合编程实例(调用dll)
- mysql数据库基础 博客园_MySQL数据库基础
- 开源 | 近期遥感航空影像的检索、检测、跟踪、计数、分类相关工作
- c语言for嵌套循环语句,关于for嵌套循环语句的疑问
- 用matlab进行拉普拉斯滤波,[转载]matlab滤波技术及区域处理---线性滤波
- stm32呼吸灯程序_STM32寄存器操作点亮LED灯
- python输入若干个数字求和
- 超大图片的缩放算法(撑爆内存的那种)
- 浙大计算机就业方向,浙大四大 王牌专业,毕业后工作待遇高,发展前景非常广阔...
- 输入苹果的单价和购买的数量,计算总价,分别显示总价的整数部分和四舍五入后的整数部分
- 手把手教会你视频转文字怎么弄,这个方法建议收藏备用
- ISO26262功能安全 安全等级和量化指标
- MongoDB简单学习小总结
热门文章
- python教程视频哪个好-Python入门视频哪个好?
- 微软不愿意提及的软肋:Win10的语音识别
- 长虹发布AI 3.0 引领电视行业跨入AI3.0时代
- String.format()用法
- mac地址容量的作用_IP地址冲突网络故障排查案例
- iview关闭抽屉弹层时清空Select弹框高亮样式
- 51单片机微波炉c语言程序,基于51单片机的微波炉控制C源程序.doc
- hbase1.1.1 连接集群_HBase-1.2.1集群搭建
- Vue中条件判断 v-if 、v-show
- 【数组】牛客网:调整数组顺序使奇数位于偶数前面(一)