题意
给定 n 个数的序列 a,交换序列的任意两个数 k 次,求交换后最大子段和。
解法
考虑贪心。
因为 n≤200,k≤10,所以我们可以考虑平方级别的复杂度。
假设最终必须选区间 l,r(l≤r),那么显然这 k 次操作,每次应该选择区间内最小值,和区间外最大值交换,也就是交换 mini=lrai 和 max{maxi=1l−1ai,maxi=r+1nai} 交换,但是如果区间内最小值 ≥ 区间外最大值,那么停止交换。
对于每一个区间 l,r 都进行 k 次查询最值,复杂度 O(n3k),可以通过。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现