首页 > 其他分享 >Make Them Narrow

Make Them Narrow

时间:2024-08-15 22:26:51浏览次数:9  
标签:Them int Make 序列 Narrow 贪心

题目大意:

给你一个 \(n\) 和 \(k\) ,再给你一个长度为 \(N\) 的序列 \(A\) ,
从 \(A\) 中任意选择 \(K\) 个元素并将其删除,然后按原来的顺序将剩余的元素连接起来,形成一个新的序列 \(B\) ,然后求这个序列的极差。

解题思路

错误解法

一开始我想到了贪心:把 \(A\) 数组排个序,然后把开头结尾依此去掉即可。
但是好比这个数据:
1 3 3 9 11
贪心可以得到:3 3 9
但是实际上应该是这样:1 3 3

正确解法

我们可以用一直类似滑动窗口的方式解决这个问题:

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, k;
int a[N], ans = INT_MAX;
int main()
{
    cin >> n >> k;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    sort(a + 1, a + 1 + n); // 排序
    for (int i = 1; i <= n - (n - k) /*n - k 指的是留下的数*/ - 1 /*去掉当前这一个数字*/; i++)
    {
        ans = min(ans, a[i + (n - k) - 1 /*同上*/] - a[i]);
        // 因为排序,所以小的在上,大的在下,计算极差直接用最后一个减掉第一个即可
    }
    cout << ans;
    return 0;
}

标签:Them,int,Make,序列,Narrow,贪心
From: https://www.cnblogs.com/ACyming/p/18361924

相关文章

  • 【cmake】关于cmake链接库的顺序要求
    注意注意:在CMake中,你可以使用target_link_libraries命令来指定链接顺序。这个命令接受一个目标(target)和一系列库(库可以是库目标、库文件路径或导入的库目标)作为参数。链接顺序通常很重要,特别是当库之间存在依赖关系时。cmake_minimum_required(VERSION3.10)project(My......
  • ENG2031 Mathematical Modelling
    ENG2031MathematicalModelling–InstructionsforAssignmentAvailable:Thursday28thMarch2024.Submission:23:59onMonday29thApril2024.Youshouldalreadyhavesubmittedseveralworksheetsonthevariousproblemsdiscussedinteachingweeks3-8......
  • 【CMake】掌握CMake基本操作
    @目录1.文件树和CMakeLists.txt一览1.1语法基本规则1.2文件目录讲解2.基本指令讲解2.1CMAKE_MINIMUM_REQUIRED(VERSIONXXX)2.2PROJECT(projectname)2.3SET()2.4ADD_SUBDIRECTORY(srcbin)2.5INCLUDE_DIRECTORIES(lib/)2.6ADD_EXECUTABLE(mainmain.cpp)2.7ADD_LIBRARY(......
  • Django 数据库迁移:makemigrations 和 migrate 命令详解及常见问题解决
    目录1.问题所示2.pythonmanage.pymakemigrations3.pythonmanage.pymigrate4.拓展1.问题所示最初始的状态是遇到这个问题由于刚开始跑pythonweb项目,开源项目附带的Readme,个别命令不太懂,对此详细研究其基本知识最终的解决方案如下:清理迁移文件:删除迁移目......
  • 视觉SLAM ch3补充——在Linux中配置VScode以及CMakeLists如何添加Eigen库
            ch3中的所有代码,除了在kdevelop中运行,还可以在VScode中运行。下面将简要演示配置过程,代码不再做解答,详细内容在下面的文章中。(这一节中的pangolin由于安装过程中会出现很多问题,且后续内容用不到该平台,所以暂时不进行安装)视觉SLAMch3—三维空间的刚体运动http......
  • CMake 构建 C++ 项目
    使用CMake构建C++项目便于跨平台开发,在Linux上可以生成makefile,并通过make来进行编译。在Windows上可以生成.sln项目,并结合VS继续进行开发,或MSVC编译器来直接将项目编译成目标文件。1、创建.cpp文件,以编译成exe程序#include<iostream>intmain(){printf("h......
  • CMake-正规程序编译
    正规组织结构下编译正规组织结构指的是文件组织结构规范工整。一般情况下分为binbuildincludesrclib这些文件夹。例如在写使用线程进行tcp连接的demo中,组织架构如下:bin中存放可执行的二进制文件;build为编译文件夹;include存放所有的头文件;lib存放库文件,本文中没有使用;s......
  • Makefile 编译多级目录多个目标文件模板
    对于当前目录结构下的Makefile(基于图书管理系统).├──Makefile├──README.md├──bin│├──adminsys│└──usersys├──build│├──adminmain.o│├──generalcore.o│├──generalimpl.o│├──generalview.o│├──......
  • 在clion IDE中编写ADI CCES的工程代码,cmake设置
    有时需要在CCES中编译代码,或者在stm32的mdk或者stm32cubeide中编译,但是习惯了在clion中编写代码,但是clion中需要CMAKES设置,所以需要自己写一个cmake文件,下面是一个模板文件cmake_minimum_required(VERSION3.24)project(proj_name)#add_definitions(-DCORE0-D_DEBUG-DAD......
  • Make it Alternating
    赛时用的DP,但是转移有一点点想不清楚设\(f[i][0/1]\)表示前\(i\)个字符,以\(0/1\)结尾的最小删除数目,\(g[i][0/1]\)表示前\(i\)个字符,在达到以\(0/1\)结尾的最小删除数目的前提下的方案数然后就会发现此时的\(g\)比较难转移,我们必须要将删除字符转换为保留字符,这样的话就可以设\(......