备战蓝桥杯---贪心刷题2

话不多说,直接看题:

首先我们大致分析一下,先排序一下,K==n,那就全部选。

当k<n时,k是偶数,那么结果一定非负,因为假如负数的个数有偶数个,那么我们成对选它,假如是奇数个,我们就把某一个负数选出,再成对选即可。

若k是奇数,那么所有数均负,那么答案《0,如果至少存在一个非负数,那我们先选一个非负数,然后问题就转化成了上一个形式。

因此我们排一下序,假如k是偶的,那么我们从两端成对的选,k是奇数,那么一定先选正的(若选负的那么后面也是选奇数个,这样就没有区别了),接下来就是刚才的问题了。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=100010,mod=1e9+9;
typedef long long LL;
int n,k;
int a[N];
int main(){cin>>n>>k;for(int i=0;i<n;i++) scanf("%d",&a[i]);sort(a,a+n);int res=1;int l=0,r=n-1;int sign=1;if(k%2){res=a[r--];k--;if(res<0) sign=-1;}while(k){LL x=(LL)a[l]*a[l+1],y=(LL)a[r-1]*a[r];if(x*sign>y*sign){res=x%mod*res%mod;l+=2;}else{res=y%mod*res%mod;r-=2;}k-=2;}cout<<res;
}

接题:

首先,后缀表达式也可以实现括号操作,首先假如没有负号,那么都是直接相加。

同时我们可以把减号从M变成1(1-(a-b-c---)),最多有N+M个减号。

因此我们减一个最小值,同时必须加最大值(第一个一定是正的),其他加绝对即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=200010;
int n,a[N],m;
int main(){cin>>n>>m;int k=n+m+1;for(int i=0;i<k;i++) scanf("%d",&a[i]);if(m==0){LL res=0;for(int i=0;i<k;i++) res+=a[i];cout<<res;return 0;}sort(a,a+k);LL res=a[k-1]-a[0];for(int i=1;i<k-1;i++) res+=abs(a[i]);cout<<res;
}

接题:

我们不妨看看前缀和,我们会惊奇的发现,我们每一次操作相当于交换一下他和它前面的前缀和,因此问题就转化成了求最大前缀和差值的min,并且两端是固定的,中间一段可以任意交换。

那么怎么求?我们不妨假设a[0]<a[n],同时确定其中的max与min。

此时,我们把图像向y轴投影压缩成一条线段,然后排一下序得到:

那么怎么走最优?

显然我们从S0开始向左两点走一步,即跨一个点走一步是最优的。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=300010;
LL a[N],s[N];
bool st[N];
int n;
int main(){int t;cin>>t;while(t--){scanf("%d",&n);s[0]=0;for(int i=1;i<=n;i++){scanf("%lld",&a[i]);s[i]=s[i-1]+a[i];}LL s0=s[0],sn=s[n];if(s0>sn) swap(s0,sn);sort(s,s+n+1);//注意起点在0上for(int i=0;i<=n;i++){if(s[i]==s0){s0=i;break;}}for(int i=0;i<=n;i++){if(s[i]==sn){sn=i;break;}}memset(st,0,sizeof(st));int l=0,r=n;for(int i=s0;i>=0;i-=2){a[l++]=s[i];st[i]=1;}for(int i=sn;i<=n;i+=2){a[r--]=s[i];st[i]=1;}for(int i=0;i<=n;i++){if(st[i]==0) a[l++]=s[i];}LL res=0;for(int i=1;i<=n;i++){res=max(res,abs(a[i]-a[i-1]));}cout<<res<<endl;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/787140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Reasoning on Graphs: Faithful and Interpretable Large Language Model Reasonin

摘要 大型语言模型(llm)在复杂任务中表现出令人印象深刻的推理能力。然而&#xff0c;他们在推理过程中缺乏最新的知识和经验幻觉&#xff0c;这可能导致不正确的推理过程&#xff0c;降低他们的表现和可信度。知识图谱(Knowledge graphs, KGs)以结构化的形式捕获了大量的事实…

element-ui-plus el-tree 树形结构如何自定义内容

element-ui-plus el-tree 树形结构如何自定义内容 本文提及的 elementUI 版本 为 elementUI Plus 版本 一、需求 项目中遇到一个需要设置权限的地方&#xff0c;但目录和权限是放在一起的&#xff0c;这样就很不好区分类别&#xff0c;为了区分类别&#xff0c;就需要自定义树…

【Win】修改打印机名字

直接修改注册表容易翻车&#xff0c;手动改变只需要两步 1 定位属性 2 修改名字

Python文件操作命令

文件操作 我知道你最近很累&#xff0c;是那种看不见的、身体上和精神上的疲惫感&#xff0c;但是请你一定要坚持下去。就算无人问津也好&#xff0c;技不如人也好&#xff0c;千万别让烦躁和焦虑毁了你的热情和定力。别贪心&#xff0c;我们不可能什么都有&#xff0c;也别灰心…

为什么都说”一入Java深似海“?

引言 在当今数字化时代&#xff0c;编程已经成为一项至关重要的技能。而在众多编程语言中&#xff0c;Java以其广泛的应用领域和强大的功能特性&#xff0c;吸引了无数开发者的目光。无论是Web开发、移动应用还是大数据处理&#xff0c;Java都发挥着举足轻重的作用。然而&…

java的包装类型问题

java的基本类型大家都知道。但是实际应用。 还就只有&#xff0c; boolean,int,long,float,double,string 不常用的 char,byte,short 他们的包装类型 Character Byte Short Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。 Byte,Short,Integer,Lo…

C++的字节对齐

什么是字节对齐 参考什么是字节对齐&#xff0c;为什么要对齐? 现代计算机中&#xff0c;内存空间按照字节划分&#xff0c;理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问&#xff0c;这就需要各种类型数据按照一定的规…

纳米软件电源测试系统:如何让电源模块检测更简单?

纳米软件NSAT-8000电源模块测试系统专门为AC-DC、DC-DC电源模块提供一站式测试解决方案。系统适用于电源研发、生产测试场景&#xff0c;并提供测试数据采集、智能分析、故障预测与诊断、维护决策与优化等大数据应用服务。 那么如何用电源测试系统检测电源模块的各项性能指标呢…

docker部署修改主机网络

教学版教程&#xff1a;docker 部署教学版本-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞23次&#xff0c;收藏18次。1&#xff09;docker 部署mysql、redis、nginx ;2)docker compose一键单机部署&#xff1b;3&#xff09;docker网络&#xff1b;4&#xff09;dcocker swarn…

如何在Bash中比较数字

问题&#xff1a; 我无法让数值比较工作正常&#xff1a; echo "enter two numbers"; read a b;echo "a$a"; echo "b$b";if [ $a \> $b ]; thenecho "a is greater than b"; elseecho "b is greater than a"; fi;问题在…

JUC:double-checked locking(DCL) 懒汉单例模式

文章目录 double-checked locking(DCL) 问题解决方法 volatile作用 double-checked locking(DCL) 问题 第一个if用于后续进入的线程&#xff0c;不用再获取锁来判断是否已经创建了对象。第二个if&#xff0c;为的是第一个进入的线程创建对象&#xff0c;以及防止卡在第一个if之…

vue3.3优化了defineProps和defineEmits写法

针对defineProps的优化 父组件调用 <template><A :child"[yx]"></A> </template><script setup lang"ts">import A from ./A.vue</script>子组件 普通方法获取props 传递过来的之 <template><div>A c…

已解决MQClientException: No route info of this topic, mytopic异常的正确解决方法,亲测有效!!!

已解决MQClientException: No route info of this topic, mytopic异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 一、问题分析 二、报错原因 三、解决思路 四、解决方法 五、总结 博主v&#xff1a;XiaoMing_Java 一、问题分析 在使…

GEE:获取不同地表类型的Landsat地表温度(Land Surface Temperature,LST)时间序列

作者&#xff1a;CSDN _养乐多_ 本文将分享论文《Google Earth Engine Open-Source Code for Land Surface Temperature Estimation from the Landsat Series》中的基于Landsat时间序列影像计算地表温度的API和获取指定点&#xff08;Land Surface Temperature&#xff0c;LS…

题解 -- 第六届蓝桥杯大赛软件赛决赛C/C++ 大学 C 组

https://www.lanqiao.cn/paper/ 1 . 分机号 模拟就行 : inline void solve(){int n 0 ;for(int a1;a<9;a){for(int b0;b<9;b){for(int c0;c<9;c){if(a>b && b>c){n ;}}}}cout << n << endl ; } 2 . 五星填数 直接调用全排列的库函数…

ZCMU操作系统课程实验 - 实验1-Linux的使用

登录 1. 打开这个东西 2. 在 文件 - > 打开 中打卡机房里VMOS文件里的这个东东 3. 然后依次操作下去好了&#xff0c;有红色的选项&#xff0c;我都是选的"Do nothing"。完成后就会出现这样一个黑框框。 4. 让你登录。输入&#xff1a;root。密码&…

qt5.12版本源码交叉编译的错误

参考linux交叉编译Qt_linux qt 交叉编译-CSDN博客 配置阶段和编译阶段都有error 需要上按照上面的链接&#xff0c;进行修改源码&#xff0c;才能正常编译。 config配置 ./configure -prefix /home/c/qt-everywhere-src-5.12.1/aarch \ -opensource \ -release \ -confirm-l…

P6136 【模板】普通平衡树(数据加强版)题解 pb_ds 模版

【模板】普通平衡树&#xff08;数据加强版&#xff09; 传送门 题目背景 本题是 P3369 数据加强版&#xff0c;扩大数据范围并增加了强制在线。 题目的输入、输出和原题略有不同&#xff0c;但需要支持的操作相同。 题目描述 您需要写一种数据结构&#xff08;可参考题目…

提问的智慧-怎么提问

提问的智慧 转载自&#xff1a;Github&#xff08;https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md&#xff09;&#xff0c;没想到有中文版的&#xff0c;分享给你们。 How To Ask Questions The Smart Way Copyright © 2…

如何在Mac上停止旋转等待光标?这里提供详细步骤

序言 彩虹色的圆圈对于Mac用户来说是一个痛苦的景象。如果你幸运的话,它会在几秒钟内消失,但更常见的是,它会停留几分钟,让你无助地被锁在应用程序或整个Mac之外。 由于并不总是清楚如何处理转圈圈的光标,或者首先是什么导致了它,让我们将其分解。在本文中,我们将了解…