蓝桥杯_拔河_java

news2025/3/24 5:01:49

 佬们能不能对思路二提供点建议,一直过不了T_T。

 题目

思路

        首先感觉有个坑点,就是可以不用把所有学生都选上,但是一定要保证两个部分学生的编号是连续的。比如一共5个人,编号是{1,2,3,4,5},你可以选{1,2},{5};但是你不能选{1,3},{5},因为{1,3}是不连续的,缺了2。

   总思路:

        这题总思路是一致的,只不过在实现上可以尝试以下两种方式。

        根据那个坑点应该可以想到,我们可以找两个区间,让这两个区间里数据之和的差最小即可。但是我们怎么能够找到这两个区间就是个问题。

        一般涉及到区间求和,基本会和前缀和挂点勾,但是怎么运用前缀和又是个问题。

        这题我最开始就是踩了坑,后来看了大神的代码,归纳出了下边的总思路:

        就是我们可以把所有子区间的和都求出来,然后从小到大排个序,再求相邻数据的差(后一个-前一个),取最小的就可以(因为升序嘛,肯定>=0)。

        下面拿样例举个例子:

                5个学生,力量值分别为10  9  8  12  14,

                我们先从第一个学生10开始求区间和:

                        [10]-->10

                        [10,9]-->19

                        [10,9,8]-->27

                        [10,9,8,12]-->39        

                        [10,9,8,12,14]-->53

                第二个学生9开始:

                        [9]-->9

                        [9,8]-->17

                        [9,8,12]-->29

                        [9,8,12,14]-->43

                同理,剩下三个学生也是这样。

                然后所有子区间的和升序排一下,结果应该是这样的:

                 list = [8 9 10 12 14 17 19 20 26 27 29 34 39 43 53]

                然后你用list[i] - list[i-1]求相邻的两个数据的差,最后取最小的就行。

可能有人会问,如果相邻的两个数,他们原来对应的区间有重合怎么办?

        有重合的话,你做差是不是就相当于把重合的部分减去了,只剩下非公共部分的了。

        比如:

        你看上边那个区间的值是s1+s2,下边的是s3+s4,又因为s2=s3,所以做完差之后,其实就是s4-s1的值,也就是说虽然一开始区间[0,5]和[3,7]有覆盖的部分,但是并不影响最后的结果。

        转化成题意可以这么理解,区间1选了[a,b],区间2选了[c,d](a+b > c+d),假设这个差就是最小的,但是你们老师觉得人有点少,给区间1,2分别找了一个人,对应e,f,恰好的是e,f力量一样。这么看最后他们的力量差还是不变的。我是这么理解的。

        思路一:没有很死板的先求前缀和数组

                就是没有直接求前缀和数组,而是通过两层for循环,直接把所有子区间求出来了。(这么看也不像个思路,感觉和废话一样,哈哈哈)

        思路二:把前缀和数组求了出来,然后求每个子区间的和,但是只过了15%,后续会补T_T

                这个就是把前缀和数组算出来,操作前缀和数组,去求个每个子区间的和。(这种的我还没整出来,对前缀和还是理解不透彻)

代码

注释掉的就是思路二(T_T)

也请大佬们看看思路二写的有什么问题,感谢!!

package 蓝桥;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class 拔河 {
    public static void main(String[]args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        ArrayList<Long> list = new ArrayList<>();
        int []a = new int[n + 1];
        for(int i = 1;i <= n;i ++) {
            a[i] = sc.nextInt();// 存力量
        }
        for(int i = 1;i <= n;i ++) {
            long sum = a[i];
            // 落单的,也就是单个数的,也要加到list里面,不排除老师每个队只找一个学生。
            // 虽然不加这句话也过了题。
            list.add(sum); 
            for(int j = i+1;j <= n;j ++) {
                sum += a[j];
                list.add(sum);
            }
        }
        Collections.sort(list);
        long min = Long.MAX_VALUE;
        for(int i = 1;i < list.size();i ++) {
            min = Math.min(min,(list.get(i) - list.get(i-1)));
        }
        System.out.println(min);
//        int[] sum = new int[n+1];
//        sum[0] = 0;
//        for(int i = 1;i <= n;i ++) {
//            sum[i] = sum[i-1] + a[i];
//        }
//        for(int i = 1;i <= n;i ++) {
//            for(int j = i;j <= n;j ++) {
//                list.add(sum[j] - sum[i-1]);
//            }
//        }

        System.out.println();
//        int min = Integer.MAX_VALUE;
//        for(int i = 1;i < list.size();i ++) {
//            min = Math.min(min,(list.get(i) - list.get(i-1) ));
//        }
//        System.out.println(min);
//        Collections.sort(list);
//        for (Long integer : list) {
//            System.out.print(integer + " ");
//        }
    }
}

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

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

相关文章

fastapi 实践(三)Swagger Docs

fastapi 实践&#xff08;一&#xff09;基础 fastapi 实践&#xff08;二&#xff09;异常捕获 fastapi 实践&#xff08;三&#xff09;Swagger Docs fastapi Swagger 1. FastAPI 交互式 API 文档2. 故障解决2.1. FastAPI 访问 docs 显示空白/加载失败2.2. Swagger 报错&…

每日一题力扣3248.矩阵中的蛇c++

3248. 矩阵中的蛇 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int finalPositionOfSnake(int n, vector<string>& commands) {int i 0;int j 0;for (int k0;k<commands.size();k) {if (commands[k] "RIGHT")j;else if (comma…

Channel-wise Knowledge Distillation for Dense Prediction论文阅读和

paper&#xff1a;https://arxiv.org/pdf/2011.13256.pdf code&#xff1a;https://github.com/open-mmlab/mmrazor 这篇paper主要是商汤开源的mmrazor中提及在detection有效果&#xff0c;我之前记录的几篇sota文章虽然在各自的paper中在detection领域都有提及有增益&#…

centos 7 搭建FTP本地用户

在 CentOS 7 系统上基于本地用户搭建 FTP 服务&#xff0c;可按以下步骤操作&#xff1a; 1. 安装 vsftpd 服务 vsftpd 是一款常用的 FTP 服务器软件&#xff0c;可借助 yum 来安装&#xff1a; bash yum install -y vsftpd2. 启动并设置开机自启 vsftpd 服务 bash systemct…

混元视频与万相2.1全面对比分析

混元视频与万相2.1全面对比分析&#xff08;2025版&#xff09; 一、模型背景与技术定位 混元视频&#xff08;HunYuan Video&#xff09; 由腾讯开源&#xff0c;定位为“影视级AI视频生成工具”。核心能力集中在图生视频领域。模型架构基于13B参数规模&#xff0c;强调导演级…

20250318在ubuntu20.04中安装向日葵

rootrootrootroot-X99-Turbo:~$ sudo dpkg -i SunloginClient_15.2.0.63064_amd64.deb rootrootrootroot-X99-Turbo:~$ sudo apt-get install -f rootrootrootroot-X99-Turbo:~$ sudo dpkg -i SunloginClient_15.2.0.63064_amd64.deb 20250318在ubuntu20.04中安装向日葵 2025/3…

如何记录Matlab程序运行过程中所占用的最大内存(续)

在上一篇博客中&#xff0c;我们讨论了如何记录Matlab程序运行过程中所占用的最大内存。 博客原文&#xff1a;如何记录Matlab程序运行过程中所占用的最大内存-CSDN博客 但经过测试发现&#xff0c;这与实际有非常大的差异。运行如下例子&#xff1a; clear;clc; profile on…

自动驾驶背后的数学:多模态传感器融合的简单建模

上一篇博客自动驾驶背后的数学:特征提取中的线性变换与非线性激活 以单个传感器为例,讲解了特征提取中的线性变换与非线性激活。 这一篇将以多模态传感器融合为例,讲解稍复杂的线性变换和非线性激活应用场景。 (一)权重矩阵的张量积分解 y = W x + b = [ w 11 ⋯ w 1 n ⋮…

12 File文件对象:创建、获取基本信息、遍历文件夹、查找文件;字符集的编解码 (黑马Java视频笔记)

文章目录 File >> 存储数据的方案1. 认识File2. File操作2.1 创建File对象2.2 File操作1&#xff09;对文件对象的信息的操作2&#xff09;文件/文件夹的创建/删除3&#xff09;⭐⭐对文件夹的遍历 3. 方法递归3.1 认识递归3.2 递归算法及其执行流程1) 案例&#xff1a;2…

HTML应用指南:利用GET请求获取猫眼电影日票房信息——以哪吒2为例

2025年春节档期&#xff0c;国产动画电影《哪吒之魔童闹海》&#xff08;以下简称《哪吒2》&#xff09;以颠覆性的叙事风格与工业化制作水准震撼登场&#xff0c;不仅刷新了中国动画电影的票房纪录&#xff0c;更成为全球影史现象级作品。影片凭借春节档期的爆发式开局、持续5…

荣耀手机卸载应用商店、快应用中心等系统自带的

1.下载abd ADB Download - Get the latest version of ADB and fastboot 2.手机打开开发者选项 3.手机接电脑打开USB调试 4.下载MT管理器查看系统包名 D:\1.LFD\ADB\platform-tools-latest-windows\platform-tools>adb shell adb.exe: no devices/emulators found 这边是…

苍穹外卖学习笔记

整体概述 1).用户层 本项目中在构建系统管理后台的前端页面&#xff0c;我们会用到H5、Vue.js、ElementUI、apache echarts(展示图表)等技术。而在构建移动端应用时&#xff0c;我们会使用到微信小程序 2).网关层 Nginx是一个服务器&#xff0c;主要用来作为Http服务器&…

每日一题力扣2974.最小数字游戏c++

2974. 最小数字游戏 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> numberGame(vector<int>& nums) {vector<int> arr(nums.size());sort(nums.begin(),nums.end());for(size_t i0;i<nums.size();i2){arr[i]nums[i1]…

软考中级-软件设计师 准备

软考中级-软件设计师 准备 一、软考相关1.1、考试时间1.2、考试时长1.3、题型和分值&#xff1a; 二、软考备考2.1、相关书籍2.2、推荐课程&#xff1a;B站up主zst_20012.3、学习路线 一、软考相关 1.1、考试时间 一年有两次软考&#xff0c;一般是五月末和十一月的中旬 以下…

EasyRTC嵌入式音视频通信SDK:WebRTC技术下的硬件与软件协同演进,开启通信新时代

在当今数字化时代&#xff0c;智能设备的普及和人们对实时通信需求的不断增长&#xff0c;推动了嵌入式音视频通信技术的快速发。EasyRTC嵌入式音视频通信SDK凭借其独特的技术特点和应用优势&#xff0c;在嵌入式设备和多平台实时通信领域脱颖而出。 1、轻量级设计与高性能 Ea…

Lineageos 22.1(Android 15)实现负一屏

一、前言 方案是参考的这位大佬的&#xff0c;大家可以去付费订阅支持一波。我大概理一下Android15的修改。 大佬的方案代码 二、Android15适配调整 1.bp调整&#xff0c;加入aidl引入&#xff0c;这样make之后就可以索引代码了 filegroup {name: "launcher-src"…

《深度学习》——YOLOv3详解

文章目录 YOLOv3简介YOLOv3核心原理YOLOv3改进YOLOv3网络结构 YOLOv3简介 YOLOv3&#xff08;You Only Look Once, version 3&#xff09;是一种先进的实时目标检测算法&#xff0c;由 Joseph Redmon 和 Ali Farhadi 开发。它在目标检测领域表现出色&#xff0c;具有速度快、精…

【设计模式】三十一、状态模式

系列文章|源码 https://github.com/tyronczt/design-mode-learn 文章目录 系列文章|源码一、模式核心思想二、模式结构三、Java代码示例&#xff1a;订单状态管理1. 定义状态接口2. 实现具体状态类3. 上下文类&#xff08;Context&#xff09;4. 客户端调用5. 运行截图 四、状…

vue 获取当前时间并自动刷新

新增需求&#xff0c;需要在大屏的右上角展示当前时间&#xff0c;并实时按秒刷新&#xff0c;通过通义千问搜索关键js代码后&#xff0c;整理出如下代码。 【效果图】 【HTML】 <div class"time-wrap">{{ formattedDateTime }}<span> {{ weekTime }}&…

C 语 言 --- 扫 雷 游 戏(初 阶 版)

C 语 言 --- 扫 雷 游 戏 初 阶 版 代 码 全 貌 与 功 能 介 绍扫雷游戏的功能说明游 戏 效 果 展 示游 戏 代 码 详 解game.htest.cgame.c 总结 &#x1f4bb;作 者 简 介&#xff1a;曾 与 你 一 样 迷 茫&#xff0c;现 以 经 验 助 你 入 门 C 语 言 &#x1f4a1;个 人 主…