蓝桥杯备赛-拔河

news/2025/2/27 11:28:29

问题描述

小明是学校里的一名老师,他带的班级共有 nn 名同学,第 ii 名同学力量值为 aiai​。在闲暇之余,小明决定在班级里组织一场拔河比赛。

为了保证比赛的双方实力尽可能相近,需要在这 nn 名同学中挑选出两个队伍,队伍内的同学编号连续:{al1,al1+1,…,ar1−1,ar1}{al1​​,al1​+1​,…,ar1​−1​,ar1​​} 和 {al2,al2+1,…,ar2−1,ar2}{al2​​,al2​+1​,…,ar2​−1​,ar2​​},其中 l1≤r1<l2≤r2l1​≤r1​<l2​≤r2​。

两个队伍的人数不必相同,但是需要让队伍内的同学们的力量值之和尽可能相近。请计算出力量值之和差距最小的挑选队伍的方式。

输入格式

输入共两行。

第一行为一个正整数 nn。

第二行为 nn 个正整数 aiai​。

输出格式

输出共一行,一个非负整数,表示两个队伍力量值之和的最小差距。

样例输入

5
10 9 8 12 14

样例输出

1

样例说明

其中一种最优选择方式:

队伍 1: {a1,a2,a3}{a1​,a2​,a3​},队伍 2:{a4,a5}{a4​,a5​},力量值和分别为 10+9+8=2710+9+8=27 , 12+14=2612+14=26,差距为 ∣27−26∣=1∣27−26∣=1 。

评测用例规模与约定

对于 20%20% 的评测用例,保证 n≤50n≤50 。

对于 100%100% 的评测用例,保证 n≤103,ai≤109n≤103,ai​≤109 。

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
//计算两个子数组的最小差值,前缀和
typedef long long LL;
typedef pair<LL, pair<int, int>> PIII; // 存储子数组和、起始位置和结束位置
const int N = 1050;

LL s[N], a[N];

int main() {
    int n;
    cin >> n;
    vector<PIII> v;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        s[i] = s[i - 1] + a[i]; // 计算前缀和
    }
    // 计算所有子数组和及其起始和结束位置
    for (int i = 1; i <= n; i++) {
        for (int j = i; j <= n; j++) {
            v.push_back({s[j] - s[i - 1], {i, j}}); // 存储子数组和、起始位置和结束位置
        }
    }
    // 按子数组和排序
    sort(v.begin(), v.end());//元素是piar时,默认字典序排列分别比较第一个,第二个等
    LL ans = 1e18;
    for (int i = 0; i < v.size() - 1; i++) 
    //子数组已经按照大小排列,只需要依次计算相邻的子数组的差值即可并进行比较
    {
            // 检查两个子数组是否不相交
            if (v[i].second.second < v[i+1].second.first || v[i+1].second.second < v[i].second.first) {
                ans = min(ans, abs(v[i+1].first - v[i].first));
            }
    }
    cout << ans << endl;
    return 0;
}


http://www.niftyadmin.cn/n/5870039.html

相关文章

Android AsyncLayoutInflater异步加载xml布局文件,Kotlin

Android AsyncLayoutInflater异步加载xml布局文件&#xff0c;Kotlin implementation "androidx.asynclayoutinflater:asynclayoutinflater:1.1.0-alpha01" import android.os.Bundle import android.util.Log import android.view.View import android.view.ViewGro…

Redis 高可用性:如何让你的缓存一直在线,稳定运行?

&#x1f3af; 引言&#xff1a;Redis的高可用性为啥这么重要&#xff1f; 在现代高可用系统中&#xff0c;Redis 是一款不可或缺的分布式缓存与数据库系统。无论是提升访问速度&#xff0c;还是实现数据的高效持久化&#xff0c;Redis 都能轻松搞定。可是&#xff0c;当你把 …

使用elasticdump导出/导入 -- ES数据

导出指定索引数据到指定文件夹&#xff1a; ./elasticdump --inputhttp://用户:密码IP:9201/索引名字 --output导出路径/out.json --typedata 将导出的文件导入 ./elasticdump --input路径/out.json --outputhttp://账号:密码IP:9201/索引名称 --typedata --fileTypejson 【el…

【Springboot知识】Logback从1.2.x升级到1.3.x需要注意哪些点?

文章目录 **1. 确认依赖版本**示例依赖配置&#xff08;Maven&#xff09;&#xff1a; **2. 处理 StaticLoggerBinder 的移除**解决方案&#xff1a; **3. 修改日志配置文件**示例 logback.xml 配置&#xff1a; **4. 检查兼容性问题**Spring Boot 2.x 的兼容性解决方案&#…

鸿蒙-AVPlayer

compileVersion 5.0.2&#xff08;14&#xff09; 音频播放 import media from ohos.multimedia.media; import common from ohos.app.ability.common; import { BusinessError } from ohos.base;Entry Component struct AudioPlayer {private avPlayer: media.AVPlayer | nu…

[记录贴] 火绒奇怪的进程保护

最近一次更新火绒6.0到最新版&#xff0c;发现processhacker的结束进程功能无法杀掉火绒的进程&#xff0c;弹窗提示如下&#xff1a; 可能是打开进程时做了权限过滤&#xff0c;火绒注册了两个回调函数如下&#xff1a; 但奇怪的是&#xff0c;在另外一台机器上面更新到最新版…

C++ Qt常见面试题(3):Qt内存管理机制

Qt 内存管理机制是其框架的重要组成部分,目的是简化开发者对内存的管理,减少内存泄漏的风险,同时提供高效的资源使用方式。Qt 的内存管理机制主要依赖于 对象树(Object Tree) 和 父子关系(Parent-Child Relationship) 的设计,通过智能管理对象的生命周期来实现自动化的…

ES如何打印DSL

看了一下官网版本已经来到了8.17 正常打印似乎不行&#xff0c;突破的地方则是 藏在JsonpDeserializable 这个注解上&#xff1b; JsonpDeserializable public class SearchRequest 因此只有反序列化出来之后才能打印&#xff0c;似乎就这么简单&#xff0c;看源码或许能更快…