思路分析://感谢写文博主
思路:相信大多数人和我一样在比赛的时候把这题想的太简单了_(:з」∠)_ 这题和去年的最后一题很类似,就是分类讨论,去年放在了最后一题,今年在倒数第二题,说明难度不算太难,分析出来了就会觉得emmm好坑……那么下面开始分析,我是按照符号的个数和负数的个数来分类讨论的:
①负号个数为0,那么没有办法只能全加
②负号个数等于负数个数,那么减去所有负数就能得到最大结果
③负号个数小于负数个数,可以通过加号的补充来达到上一种情况的效果的
比如(6 5 -4 -3 -2 -1),有1个减号,那么可以变成 6 + 5 - ( -4 + -3 + -2 + -1 ) ;有2个减号,那么可以变成 6 + 5 - -4 - ( -3 + -2 + -1 )  ;有3个减号,那么可以变成6 + 5 - -4 - -3 - ( -2 + -1 ) 
④负号个数大于负数个数,那么先把负数都减掉,然后再减较小的正数
综上所述,第一种是直接求和,第二种和第三种是可以合并的,即求绝对值和,第四种是先求和再减去多余负号个数的小正数。
————————————————
版权声明:本文为CSDN博主「ryo_218」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ryo_218/article/details/89515960
 
我的代码:
 #include<cstdio>
#include<cstring>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int n,lenth;
int m;//减号个数
int minus_num;//负数的个数
const int maxn = ;
int aim[maxn]; int solve()
{
int ans=;
if(m==)
{
for(int i=;i<lenth;i++)
ans+=aim[i];
return ans;
}
if(m<=minus_num)
{
for(int i=;i<minus_num;i++)
{
ans+=aim[i];
}
ans=-ans;
for(int i=minus_num;i<lenth;i++)
{
ans+=aim[i];
}
return ans;
}
if(m>minus_num)
{
for(int i=;i<minus_num;i++)
{
ans+=aim[i];
}
ans=-ans;
for(int i=minus_num;i<m;i++)
{
ans+=(-aim[i]);
}
for(int i=m;i<lenth;i++)
{
ans+=aim[i];
}
return ans;
}
return ;
} int main()
{
memset(aim,,sizeof(aim));
cin>>n>>m;
lenth=n+m+;
for(int i=;i<lenth;i++)
{
int a;cin>>a;
if(a<)minus_num++;
aim[i]=a;
}
sort(aim,aim+lenth);
printf("%d\n",solve());
return ;
}

转载的博主的代码:

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<queue>
#include<map>
#include<set>
using namespace std;
long long pos[]={};
long long neg[]={}; int main()
{
int n,m,p=,q=;
cin>>n>>m;
long long ans=;
for(int i=;i<n+m+;i++)
{
long long num;
cin>>num;
ans+=num;
if(num>)//记录正数
pos[p++]=num;
else//记录非正数
neg[q++]=num;
}
if(m==)//负号个数为0
cout<<ans<<endl;
else if(m<q)//负号个数小于负数个数
{
for(int i=;i<q;i++)
ans-=neg[i]*;//第一遍相当于减掉了一次负数绝对值,第二遍时要补2倍
cout<<ans<<endl;
}
else//负号个数大于负数个数
{
for(int i=;i<q;i++)
ans-=neg[i]*;
sort(pos,pos+p);
for(int i=;i<m-q;i++)
ans-=pos[i]*;//第一遍已经加了一次正数,去掉时要减2倍
cout<<ans<<endl;
}
return ;
}

第十届蓝桥杯CB题目I-分析的更多相关文章

  1. 第十届蓝桥杯省赛JavaB组个人题解

    前言 以下的第十届蓝桥杯Java B组省赛的题目题解只是我个人的题解,提供一些解题思路,仅作参考,如有错误,望大家指出,不甚感激,我会及时更改. 试题 A: 组队 ----- 答案:490 [问题描述 ...

  2. 第十届蓝桥杯2019年C/C++ 大学B组省赛试题

    2019年第十届蓝桥杯大赛软件类省赛C/C++大学B组 试题 A:组队 本题总分:5分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1号位至 5号位各一名球员, 组成球队的首发阵容. 每位球 ...

  3. 2019第十届蓝桥杯C++B组题解(赛后重写的,不确保答案正确性,仅供参考)

    先说一下这次的感受吧,我们考场比较乱,开始比赛了,还有的电脑有故障,(向这些人发出同情),第一次认真参加比赛,真正比赛的时候感觉没有那么正式,很乱,各种小问题,(例如博主就没找到题目在哪里,找到后又不 ...

  4. 2019年第十届蓝桥杯【C++省赛B组】

    试题 A: 组队 本题总分:5 分 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容.每位球员担任 1 号位至 5 号位时的评分如下表所示.请你计算首发阵容 ...

  5. 第十届蓝桥杯JavaB组省赛真题

    试题 A: 组队 本题总分:5 分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分如下表所示. ...

  6. 第十届蓝桥杯JavaC组省赛真题

    试题 A: 求和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包 括 1.2.9.10 至 32.39 和 40,共 28 个,他们的 ...

  7. 2019 第十届蓝桥杯大赛软件类省赛 Java A组 题解

    2019 第十届蓝桥杯大赛软件类省赛 Java A组 试题A 题解 ​ 题目最后一句贴心的提示选手应该使用 long (C/C++ 应该使用 long long). ​ 本题思路很直白,两重循环.外层 ...

  8. Java实现第十届蓝桥杯JavaC组第十题(试题J)扫地机器人

    扫地机器人 时间限制: 1.0s 内存限制: 512.0MB 本题总分:25 分 [问题描述] 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所 示. 走廊内部署了 K 台扫地机器人 ...

  9. Java实现第十届蓝桥杯外卖店优先级

    试题 G: 外卖店优先级 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] "饱了么"外卖系统中维护着 N 家外卖店,编号 1 ∼ N.每家外卖店 ...

随机推荐

  1. DOCKER 学习笔记5 Springboot+nginx+mysql 容器编排

    前言 在上节的内容中,我们已经通过一个简单的实例,将Docker-compose 进行了实际的应用.这一小节中.我们将通过学习和了解,着重认识容器的编排,上一节只算是一个小小的测试.在这一节中.我们将 ...

  2. 使用Intellij编写Spring Hello World

    编写基于Intellij2016.3与Java SDK1.8 下载Spring最新jar包: http://repo.spring.io/release/org/springframework/spr ...

  3. tricky c++ new(this)

    题目如下:问下列代码的打印结果为0吗? #include <stdlib.h> #include <iostream> using namespace std; struct  ...

  4. HDU_4456_二维树状数组

    http://acm.hdu.edu.cn/showproblem.php?pid=4456 第一道二维树状数组就这么麻烦,题目要计算的是一个菱形范围内的和,于是可以把原来的坐标系旋转45度,就是求一 ...

  5. TTStand 基础知识[8] Build-In StepTypes(3)

    Build-In Step Types的最后一篇,前面两篇的连接如下: TestStand 基础知识[7] Build-In StepTypes(2) TestStand 基础知识[6] Build- ...

  6. Go语言实现:【剑指offer】二叉搜索树与双向链表

    该题目来源于牛客网<剑指offer>专题. 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. Go语言实现: type T ...

  7. c++ 中变量成员的初始化时机

    代码如下: 注意一下我打断点的位置. 最后的结果: 在程序进入MyTest()的函数体之前,控制台就打印出来了I have been constructed. 即:在进入构造函数的函数体之前,类中的成 ...

  8. 磁盘文件系统管理与LVM逻辑卷

    一.磁盘以及分区管理 无论是Linux系统还是Windows系统.当现有硬盘的规划不能满足当前需求时.我们就需要将其重新规划和调整 实现上述操作我们就需要用到fdisk磁盘及分区管理工具.此工具是大多 ...

  9. [1天搞懂深度学习] 读书笔记 lecture I:Introduction of deep learning

    - 通常机器学习,目的是,找到一个函数,针对任何输入:语音,图片,文字,都能够自动输出正确的结果. - 而我们可以弄一个函数集合,这个集合针对同一个猫的图片的输入,可能有多种输出,比如猫,狗,猴子等, ...

  10. qt creator源码全方面分析(2-3)

    目录 External Tool Specification Files 文件名 位置 文件格式 主要标签 描述标签 可执行规范标签 示例 External Tool Specification Fi ...