Odd-Even Subsequence

news/2025/2/21 18:47:23/文章来源:https://www.cnblogs.com/1111m/p/18729837

题目链接
题意:
给定一个大小为n的数组a,要求找到一个长度为k的子序列s,使得这个子序列的成本最小。这里提到的“成本”定义为:对于子序列s中奇数位置上的所有元素取最大值,以及对于偶数位置上的所有元素取最大值,然后取这两个最大值中的较小者作为该子序列的成本。
思路:
二分答案,考虑如何check mid,check时考虑贪心,考虑奇数时最大值小于等于mid,如果不行再考虑偶数。时间复杂度O(nlogn),具体实现见代码。

点击查看代码
// #pragma GCC optimize("O3")
// #pragma G++ optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define ll long long 
#define itn int
const int N = 2e5+5;
int arr[N];
int n,k;
bool ok(int x){itn g=0;int ji,ou,jiend,ouend;if(k&1){ji=k/2+1,ou=ji-1,jiend=n,ouend=n-1;}else{ou=ji=k/2,jiend=n-1,ouend=n;}for(int i=1;i<=jiend;){if(arr[i]<=x){g++;i+=2;if(g==ji){return 1; //奇数满足则返回true}}else{i++;}}g=0;for(int i=2;i<=ouend;){if(arr[i]<=x){g++;i+=2;if(g==ou){return 1; //偶数满足返回true}}else{i++;}}return 0; //奇偶都不满足,返回false
}
void solve(){cin>>n>>k;int zuida=0;int zuixiao=1e9+4;for(int i=1;i<=n;++i){cin>>arr[i];zuida=max(zuida,arr[i]);zuixiao=min(zuixiao,arr[i]);}int l=zuixiao,r=zuida;while(r-l>5){int mid=(l+r)>>1;if(ok(mid)){r=mid;}else{l=mid+1;}}for(int i=l;i<=r;++i){if(ok(i)){   cout<<i<<endl;return ;}}
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int _=1;// cin>>_;while(_--)solve();return 0;
}

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

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

相关文章

测试用例编写技巧

一、用例模板 模板1:模板2:模板3:二、用例的来源 (1)公司就有模板 (2)自己设计模板 (3)用例管理工具种导出模板 三、写用例的核心要素 用例编号、用例标题、前置条件、用例步骤,预期结果、优先级(必填) 系统名称、模块名称、用例创建时间、用例类型、实际结果、执行…

利用deepseek,体验ai写代码

vscode利用cline接入火山引擎deepseek,免费体验ai写代码。注册火山引擎,开通deepseek服务进行火山引擎官网https://www.volcengine.com/,进行注册。进入控制台,访问火山方舟在左侧下拉菜单选择开通管理,开通模型,由于我已经开通过R1模型,以DeepSeek-R1-Distill-Qwen-32B…

测试用例编写

模板1:模板2:模板3:二、用例的来源(1)公司就有模板(2)自己设计模板(3)用例管理工具种导出模板三、写用例的核心要素用例编号、用例标题、前置条件、用例步骤,预期结果、优先级(必填)系统名称、模块名称、用例创建时间、用例类型、实际结果、执行时间(非必填项)四…

TEN 现已接入智谱 GLM-Realtime丨社区来稿

就在上周,三星 Galaxy S25 系列全球首发。基于最新 Galaxy AI 的三星 Galaxy S25 系列手机是三星在全球范围内首次推出具有视频通话功能的原生 AI 智能硬件产品。三星 Galaxy S25 系列背后的智谱最新实时音视频通话 GLM-Realtime 模型,今天已经以插件形式接入 TEN。现在你可以…

Canvas._left will be removed, DO NOT USE IT

问题:SignaturePad 手绘板,在电脑端可以绘制,在小程序端绘制以后不显示。开发者工具打印日志:Canvas._left will be removed, DO NOT USE IT.原因:真机使用时确实无法获取该canvas的实例属性_left.解决:通过微信小程序的wx.createSelectorQuery()方法得到query筛选器,通…

实战解析传统发电站智能化改造-第二期(带图带教程)

传统发电站的智能化改造,如同为老工匠配备高科技工具,提升效率与精准度。改造后的发电站兼具传统与智能,更高效、环保,适应现代能源需求。智慧系统搭建平台是连接感知层和应用层的桥梁,将原始数据转化为有价值的信息,为智能决策和应用提供支持。上期介绍了传统发电站改造…

PostgreSQL技术大讲堂 - 第80讲:duckdb数据库

PostgreSQL第80讲:主题:duckdb数据库 内容介绍: 1、duckdb身世之谜 2、duckdb性能为什么秒杀众多数据库 3、安装duckdb时如何跳过众多的坑 4、duckdb的使用和管理 5、duckdb、pg_duckdb、pg三个数据库性能大比拼 主讲老师:CUUG数据库老陈,PG中文社区委员、CCF数据库专委会…

LLM高效推理:KV缓存与分页注意力机制深度解析

随着大型语言模型(LLM)规模和复杂性的持续增长,高效推理的重要性日益凸显。KV(键值)缓存与分页注意力是两种优化LLM推理的关键技术。本文将深入剖析这些概念,阐述其重要性,并探讨它们在仅解码器(decoder-only)模型中的工作原理。https://avoid.overfit.cn/post/db8875…

Nuclei漏洞扫描器:快速、灵活的漏洞检测工具

免责声明 本文旨在介绍有关特定漏洞检测工具或安全风险的详细信息,以帮助安全研究人员、系统管理员和开发人员更好地理解和修复潜在的安全威胁,协助提高网络安全意识并推动技术进步,而非出于任何恶意目的。利用本文提到的漏洞信息或进行相关测试可能会违反法律法规或服务协议…

BUUCTF-Web方向16-20wp

[极客大挑战 2019]PHP 由内容提示应该存在源码备份,常见的如下,一个个尝试 后缀:tar tar.gz zip rar 名字:www web website backup back wwwroot temp访问www.zip,下载下来解压查看index.phpflag.phpclass.php <?php include flag.php;error_reporting(0);class Name{…

【Nginx开发】如何使用Nginx搭建旁路服务器获取客户端IP

一、前言 在实际业务开发过程中,很多时候有记录客户端真实IP的需求,但是从客户端发送的请求往往会经过很多代理服务器,导致后端服务获取的IP为代理以后的IP,不具有业务含义。为了解决这个问题,可以搭建一个旁路服务器,前端在发起请求的时候需要先请求旁路服务器,获取该客…

PyBy2:若依计划任务自动化上线+内存马自动生成v2.0

免责声明 本公众号文章以技术分享学习为目的。由于传播、利用本公众号发布文章而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号及作者不为此承担任何责任。一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!前言 攻防中,遇到一个ruo…