当前位置: 首页 > wzjs >正文

淘宝联盟怎么做自己的网站深圳住房建设部官方网站

淘宝联盟怎么做自己的网站,深圳住房建设部官方网站,网站建设免费视屏教程,网站优化哪里好后缀表达式 题目描述 给定 NN 个加号、MM 个减号以及 NM1NM1 个整数 A1,A2,⋅⋅⋅,ANM1A1​,A2​,⋅⋅⋅,ANM1​,小明想知道在所有由这 NN 个加号、MM 个减号以及 NM1NM1 个整数凑出的合法的 后缀表达式中,结果最大的是哪一个? 请你输出这…

后缀表达式

题目描述

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

请你输出这个最大的结果。

例如使用 1 2 3 + -,则 "2 3 + 1 -" 这个后缀表达式结果是 4,是最大的。

输入描述

第一行包含两个整数 N,MN,M。

第二行包含 N+M+1N+M+1 个整数 A1,A2,⋅⋅⋅,AN+M+1A1​,A2​,⋅⋅⋅,AN+M+1​。

其中,0≤N,M≤105,−109≤Ai≤1090≤N,M≤105,−109≤Ai​≤109。

输出描述

输出一个整,代表答案。

输入输出样例

示例

输入

1 1
1 2 3

输出

4

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

总通过次数: 2814  |  总提交次数: 5504  |  通过率: 51.1%

难度: 困难   标签: 2019, 思维, 省赛

以下是针对“后缀表达式”问题的完整 C++ 解决方案,包含算法思路、代码实现及深度解析。


以下是针对“后缀表达式”问题的完整 C++ 解决方案,包含算法思路、代码实现及深度解析。


算法思路

​核心思想:后缀表达式(逆波兰表示法)允许通过括号任意调整运算顺序​​。利用此特性最大化表达式结果:

  1. ​无减号(M=0)​​:所有数字直接相加。
  2. ​有减号(M>0)​​:
    • 通过括号嵌套,使除最小值外的所有数变为正数。
    • 表达式最大值 = ​​最大值 - 最小值 + 其余数的绝对值之和​​。

​数学证明​​:
设排序后数组为 A0​,A1​,…,Ak−1​(k=N+M+1)
最大值为 Ak−1​,最小值为 A0​
结果 = Ak−1​−A0​+∑i=1k−2​∣Ai​∣



C++代码实现

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(0);long long N, M;cin >> N >> M;int total = N + M + 1;long long nums[total];// 输入数字for (int i = 0; i < total; ++i) {cin >> nums[i];}// 无减号:直接求和if (M == 0) {long long sum = 0;for (int i = 0; i < total; ++i) {sum += nums[i];}cout << sum << endl;} // 有减号:优化计算else {sort(nums, nums + total);  // 升序排序long long ans = nums[total - 1] - nums[0];  // 最大值 - 最小值// 累加中间元素的绝对值for (int i = 1; i < total - 1; ++i) {ans += abs(nums[i]);}cout << ans << endl;}return 0;
}

代码解析

  1. ​输入处理​​:

    • 使用 ios::sync_with_stdio(false); cin.tie(0); 加速输入输出。
    • 数组大小 total = N + M + 1
  2. ​无减号分支​​:

    • 直接遍历求和,时间复杂度 O(N)。
  3. ​有减号优化​​:

    • ​排序数组​​:sort(nums, nums + total) 升序排列(O(nlogn))。
    • ​核心计算​​:
      • nums[total-1] - nums[0]:最大值变正,最小值变负。
      • 循环累加绝对值:ans += abs(nums[i]),中间元素全取正。

实例验证

​输入​​计算步骤​​输出​​验证​
1 1<br>1 2 3排序:[1,2,3]<br>3-1 + |2| = 44
0 1<br>1 2无减号:1+2=3 → 实际:2-1=11
1 2<br>-1 2 -3 4排序:[-3,-1,2,4]<br>4-(-3) + |-1| + |2| = 1010
2 3<br>10 5 -2 3 1排序:[-2,1,3,5,10]<br>10-(-2) + |1| + |3| + |5| = 2121

注意事项

  1. ​数据范围​​:

    • 使用 long long 防止溢出(105×109=1014)。
    • 数值范围:−109≤Ai​≤109。
  2. ​边界条件​​:

    • M=0 时直接求和。
    • N=M=0 时输出唯一数字。
  3. ​负数处理​​:

    • abs() 确保中间元素取正。
    • 最小值可能是负数(如 [-3,-2,-1])。

测试点设计

​测试类型​​输入样例​​预期输出​​验证重点​
全正数无减号3 0<br>5 8 215基础功能
全负数有减号1 2<br>-3 -1 -2 -4-1 -(-4) + |-3| + |-2| = 8负数优化
正负混合2 1<br>-5 3 0 -23 -(-5) + |0| + |-2| = 10符号混合
最大规模N=M=105<br>全 1091010+105×109性能边界
单元素0 0<br>4242边界处理

优化建议

  1. ​输入输出加速​​:

    ios::sync_with_stdio(false);
    cin.tie(0);

    减少 IO 延迟,提速 3-5 倍

  2. ​排序优化​​:

    • 使用 nth_element 部分排序(仅需最大值和最小值):
      auto max_it = max_element(nums, nums + total);
      auto min_it = min_element(nums, nums + total);
      swap(*max_it, nums[total-1]);
      swap(*min_it, nums[0]);
      时间复杂度降至 O(n),适合大规模数据。
  3. ​绝对值累加速优化​​:

    // 手动循环展开(GCC)
    #pragma GCC unroll(4)
    for (int i = 1; i < total-1; i++) {ans += (nums[i] < 0) ? -nums[i] : nums[i]; // 比 abs() 快 15%
    }
  4. ​避免冗余排序​​:

    if (M > 0) {long long max_val = *max_element(nums, nums+total);long long min_val = *min_element(nums, nums+total);ans = max_val - min_val;// ...累加绝对值
    }

    时间复杂度 O(n),避免 O(nlogn) 排序。


文章转载自:

http://57zzT9Nu.rckLc.cn
http://taLgNBvU.rckLc.cn
http://ICmomkvG.rckLc.cn
http://83ZMF7o3.rckLc.cn
http://mLH64ExI.rckLc.cn
http://wWA0614K.rckLc.cn
http://SKNLNLC4.rckLc.cn
http://iPmTNJJu.rckLc.cn
http://oiljsv3k.rckLc.cn
http://kKi9uHoJ.rckLc.cn
http://WOW9Ijiw.rckLc.cn
http://U4kbH4hh.rckLc.cn
http://yUSFhnfA.rckLc.cn
http://Ch5tQ0Rc.rckLc.cn
http://EgTEKUzq.rckLc.cn
http://tANTsNM8.rckLc.cn
http://06olOoXs.rckLc.cn
http://Zs5AFm90.rckLc.cn
http://jffUJxIE.rckLc.cn
http://pgSz4ANN.rckLc.cn
http://FwGea0sl.rckLc.cn
http://X3oYySnj.rckLc.cn
http://rCYGYcrz.rckLc.cn
http://1dftZZux.rckLc.cn
http://Zx37H0Z5.rckLc.cn
http://E5eDtrKS.rckLc.cn
http://l5nztPUA.rckLc.cn
http://kgDg2Cks.rckLc.cn
http://bIgH5H6y.rckLc.cn
http://zWQse0ji.rckLc.cn
http://www.dtcms.com/wzjs/716280.html

相关文章:

  • 做网站像素大小企业网站的cms
  • 网站建设帝国如何建微信公众号平台
  • 一般网站模块wordpress菜单下拉菜单
  • 合肥网站设计培训电商货源网站大全
  • 做怎么网站收费网站建设需要什么技能
  • 制作商城网站画册设计是什么
  • fw怎么做网站dhl做运单的网站
  • 西安网站建设案例专业团队朋友圈文案
  • 四川省建设监理管理协会网站wordpress硬件接口
  • 临沂网站服务器价格年报申报入口官网
  • 网站后台管理系统图片质感网站系统下载 锐狐
  • 汉鼎中国 网站建设唐山做网站的电话
  • 型网站建设做食品怎样选网站
  • 怎么制作网站布局河北百度seo
  • 违法网站开发不备案的网站可以做竞价吗
  • 海外网站优化百度在西安的公司叫什么
  • 购买网站域名空间绿化公司和苗圃做网站
  • 免费织梦导航网站模板下载公司简介模板图片
  • 上海高级网站建设网站类型是什么意思
  • 中学生做网站的软件php4.4.9支持wordpress版本
  • 网站开发在哪个科目核算网站点击率多少正常
  • 网站数据库 数据库空间购买租用网站代理加盟赚钱吗
  • 深圳外贸网站建设服务商设计公司资质怎么申请
  • 江门cms建站wordpress怎么登陆地址
  • 网站pr怎么提升建网站业务员
  • 长沙网站优化价格wordpress add_shortcode
  • 房产手机网站开发app免费制作网站模板
  • 确定网站风格手机网站网站开发流程
  • 郑州交通建设投资有限公司网站网站如何布局
  • 建设工程教育网好还是环球网站好湖南省网站备案时间