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

求不重叠区间总和最大值

例题链接:1051-习题-数学考试_2021秋季算法入门班第一章习题:模拟、枚举、贪心
来源:牛客网
 

时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

今天qwb要参加一个数学考试,这套试卷一共有n道题,每道题qwb能获得的分数为ai,qwb并不打算把这些题全做完,
他想选总共2k道题来做,并且期望他能获得的分数尽可能的大,他准备选2个不连续的长度为k的区间,
即[L,L+1,L+2,....,L+k-1],[R,R+1,R+2,...,R+k-1](R >= L+k)。

输入描述:

第一行一个整数T(T<=10),代表有T组数据
接下来一行两个整数n,k,(2<=n<=200,000),(1<=k,2k <= n)
接下来一行n个整数a1,a2,...,an,(-100,000<=ai<=100,000)

输出描述:

输出一个整数,qwb能获得的最大分数

示例1

输入

复制2 6 3 1 1 1 1 1 1 8 2 -1 0 2 -1 -1 2 3 -1

2
6 3
1 1 1 1 1 1
8 2
-1 0 2 -1 -1 2 3 -1

输出

复制6 7

6
7
#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{int n, k;cin >> n >> k;vector<int> a(n+1);for (int i = 1; i <= n; i++){cin >> a[i];a[i]+=a[i-1];}int l=-1e18, r=-1e18;for (int i = k; i <= n - k; i++){l = max(l, a[i] - a[i - k]);r = max(r, l+a[i+k]-a[i]);}cout << r << endl;
}
signed main()
{int t;cin>>t;while (t--){solve();}return 0;
}

代码:其中找这两个最大值只需要这样就好,会自动更新。

for (int i = k; i <= n - k; i++){l = max(l, a[i] - a[i - k]);r = max(r, l+a[i+k]-a[i]);}

http://www.lryc.cn/news/590760.html

相关文章:

  • 16路串口光纤通信FPGA项目实现指南 - 第二部分(下)
  • 3.1 认识函数
  • ESP32——基于idf框架开发GPIO设备
  • OJ题目里面的复杂图形的输出类型的汇总展示(巧妙地利用对称性offset偏移量)
  • 【Linux】基本指令学习1
  • DL00294-2D图像空间中3D点云分割Delaunay三角剖分
  • spring-ai之工具调用(Tool Calling)
  • TCP 拥塞控制算法 —— 慢启动(Slow Start)笔记
  • 能行为监测算法:低成本下的高效管理
  • AlpineLinux的用户管理
  • 同态加密赋能大模型医疗文本分析:可验证延迟压缩的融合之道
  • MPPT电路设计
  • LVS集群调度器
  • 解决容器dns问题
  • LVS四种模式及部署NAT、DR模式集群
  • Liunx-Lvs配置项目练习
  • Python函数全解析
  • 横向移动(中)
  • 使用YOLOv11实现水果类别检测:从数据到模型训练的全过程
  • 每日钉钉API探索:getAuthCode实现免登授权
  • 测试工作中的质量门禁管理
  • Maven入门指南:生命周期、阶段和执行顺序详解
  • 基于FPGA的IIC控制EEPROM读写(1)
  • 项目流程管理系统使用建议:推荐13款
  • 华为OD机试_2025 B卷_完美走位(Python,100分)(附详细解题思路)
  • ES组合使用must与should时的注意事项
  • 【LeetCode刷题指南特别篇】--移除链表元素,调试技巧,链表分割
  • Linux4:线程
  • TRAE + Milvus MCP:用自然语言 0 门槛玩转向量数据库
  • OpenVela之 Arch Timer 驱动框架使用指南