对数组进行排序所需的最少操作数

2023-11-29

我正在尝试练习解决 Codeforces 中的问题。它通过将数组的元素移动到数组的开头或结尾来对数组进行排序。起初我认为它是最长的递增子序列,但在某些情况下它不起作用。例如,如果输入是 4,1,2,5,3,则 LIS 是 3,但问题的答案是将 4 移动到数组的末尾,然后将 5 移动到数组的末尾,这给了我们 2。正在尝试此 LIS 中的示例 1,6,4,5,9,8,7,3,2 是 1,4,5,9 但问题的答案是 1 和 2 之间的 7 个移动。我得到知道我应该使用贪婪的方法,但不太能理解。有人可以帮我吗?


我们可以看到,要对数组进行排序,只需移动每个元素即可at most one.

因此,为了最小化移动次数,我们需要找到未移动的元素的最大数量。这些元素是最长连续序列,这是序列(a0, a1, ... an) with a(i + 1) = ai + 1.

例如,

(4,1,2,5,3),最长连续序列为(1,2,3)

(5,2,1,3,4),最长连续序列是(2,3,4)

所以我们有我们的代码:

int[]longest = new int[n + 1];
int result = 0;
for(int i = 0; i < n; i++){
    longest[data[i]] = longest[data[i] - 1] + 1;
    result = max (longest[data[i]] , result);
}

print "Minimum number of move is " + (n - result)

解释:

在代码中,我使用了一个数组longest哪个索引ith存储最长的连续序列,结束于value i.

所以,我们可以看到longest[i] = longest[i - 1] + 1.

最长连续序列的结果是存储在中的最大值longest array.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对数组进行排序所需的最少操作数 的相关文章

  • Python Pandas:沿一列比较两个数据帧,并返回另一个数据帧中两个数据帧的行内容

    我正在处理两个 csv 文件并作为数据框 df1 和 df2 导入 df1 有 50000 行 df2 有 150000 行 我想将 df2 的 时间 与 df1 求时间差并返回所有列的值 对应相似的行 保存在df3中 时间同步 例如 35
  • NumPy 中按列增长矩阵

    在纯Python中 你可以很容易地逐列增长矩阵 data for i in something newColumn getColumnDataAsList i data append newColumn NumPy http en wiki
  • Java的数组indexOf在哪里?

    我一定错过了一些非常明显的东西 但我已经搜索遍了 但找不到这个方法 有几种方法可以使用Arrays http download oracle com javase 1 5 0 docs api java util Arrays html实用
  • C:将 unsigned char 数组转换为signed int(反之亦然)

    我正在尝试将无符号字符数组缓冲区转换为有符号整数 反之亦然 下面是演示代码 int main int argv char argc int original 1054 unsigned int i 1054 unsigned char c
  • unix 下日期字段排序

    我有包含数十万条记录的文本文件 其中一个字段是日期字段 有没有办法根据日期字段对文件进行排序 09 APR 12 04 08 43 632279000 AM 19 MAR 12 03 53 38 189606000 PM 19 MAR 12
  • PHP:将字符串分成 8 个块,我该怎么做?

    我基本上有二进制 假设它的长度是300 我如何将它分割 就像使用爆炸一样 成 8 位块 我查看了 chunk split 但它似乎只有一个 end 参数 而不是将其放入数组的选项 或者它可以插入数组吗 末尾 8 位数字可以低于 8 如果有人
  • 分而治之算法找到两个有序元素之间的最大差异

    给定一个整数数组 arr 找出任意两个元素之间的差异 使得较大的元素出现在 arr 中较小的数字之后 Max Difference Max arr x arr y x gt y 例子 如果数组是 2 3 10 6 4 8 1 7 那么返回值
  • 在 Lucene.NET 中索引 Json 对象数组

    我正在努力将任意 json 对象放入 Lucene NET 索引中 给定的对象可能如下所示 name Tony age 40 address street Weakroad number 10 floor 2 door Left skill
  • 查找所有数组的长度多维数组,Java

    我想使用多维数组来存储数据网格 但是 我还没有找到一种简单的方法来查找长度2nd数组的一部分 例如 boolean array new boolean 3 5 System out println array length 只会输出3 是否
  • 在任意时间范围内找到最佳日/月/年间隔的算法?

    如果您有时间表 请说 March 19 2009 July 15 2011 是否有一种算法可以将该时间范围分解为 March 19 2009 March 31 2009 complete days April 1 2009 December
  • 如何将多边形放入另一个多边形内[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有两个多边形 如下图所示 左边是 粗多边形 右边是 最终多边形 现在 我正在寻找算法来将 最终多边形 拟合到 粗糙多边形 内 并具有
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB
  • 调整巨大数组的大小

    我正在我的应用程序中处理巨大的数组 需要调整它们的大小 假设您有一个 2Gb 的阵列 并且想要将其大小调整为 3Gb 有没有办法在暂时不需要 5Gb 的情况下调整它的大小 例如 给定一个 1Gb 堆 使用 Xmx1G flag public
  • 如何在C中实现带连分数的自然对数?

    这里我有一个小问题 根据这个公式创建一些东西 这就是我所拥有的 但它不起作用 弗兰基 我真的不明白它应该如何工作 我尝试用一 些错误的指令对其进行编码 N 是迭代次数和分数部分 我认为它会以某种方式导致递归 但不知道如何 谢谢你的帮助 do
  • 关于 ArrayList[] x 的 Java 问题

    我一直对 ArrayList 数组有这个问题 也许你能帮忙 declare in class private ArrayList
  • 3D 数组到 3D std::vector

    我在代码函数中用 3D std vector 替换了 3D 数组 它进入了无限循环 你能给我一个提示吗 我真的需要使用向量而不是数组 谢谢 我最初的代码是 arr is a 3D array of a sudoku table the 3
  • 如何光栅化旋转矩形(通过 setpixel 在 2d 中)

    我有四个 2d 顶点 A B C D 的旋转矩形 我需要在像素缓冲区中 有效地 光栅化 绘制它 使用 setpixel x y 颜色 怎么做 我正在尝试使用一些代码 例如 convertilg a b c d do up down left
  • 独立对列进行排序,使得所有空值都位于每列的最后

    这是一个名为的示例表animal name color fox brown fox red dog gold 现在 我想要的是这样的结果 fox dog brown gold red 名称应该是结果的列 不同颜色值作为行 我的第一个想法是
  • suhosin.mt_srand.ignore 在 PHP 中一致洗牌数组的解决方法?

    我有一个 PHP 脚本 需要随机化一个具有一致结果的数组 这样它就可以向用户呈现前几个项目 然后如果他们愿意 他们可以从同一个打乱的集合中提取更多结果 我目前使用的是这个 基于我相信的 Fisher Yates 算法 function sh
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var

随机推荐

  • 获取“java.lang.UnsatisfiedLinkError”:java.library.path 中没有 lwjgl

    请注意 这不同于这个问题因为它不处理链接 因为它不询问如何通过 CLI 链接它 而是询问如何通过 Eclipse 中的 GUI 链接它 我一直在尝试使用 LWJGL 编写一个简单的程序 当我将库添加到 Eclipse Windows 7 6
  • php7 mongo 查询 findOne 的问题

    我有 ubuntu 16 04 php7 和 mongo 更新系统后 我的代码不起作用 我有一个新版本的 php ini 更新之前 我的代码是 connect m new MongoClient select a database db m
  • 使用 JQuery Sorter 插件对表中的图像和超链接列进行排序

    我有一个包含 3 列的表 第一列包含服务名称 它是一个超链接 第二列包含一个状态图标 最后一列又是一个日志文件的图像 它又是一个超链接 我想按第一列 超链接 进行排序 因此应该对超链接的文本以及第二列 基于下面给出的状态权重的状态图标 进行
  • 编写一个程序,从 10 亿个数字的数组中找出 100 个最大的数字

    我最近参加了一次面试 面试时被要求 编写一个程序 从 10 亿个数字的数组中找出 100 个最大的数字 我只能给出一个强力解决方案 即以 O nlogn 时间复杂度对数组进行排序并获取最后 100 个数字 Arrays sort array
  • 如何检查输入是否是没有任何其他字符的有效整数?

    include
  • HABTM mongoid 关注者/关注者

    Mongoid 附带了 habtm 上的 push 它在两个方向上设置了 habtm 关系 尽管删除将 delete 关联记录 但没有记录的方法可以仅删除我见过的关系 有更好的方法吗 有没有更好的方法来保证唯一性 has and belon
  • 如何制作一个AS3 Flash视频播放器?

    我想制作一个 Flash 视频播放器 在嵌入时将 URL 作为属性 并根据该属性加载视频 我现在需要的只是一个播放 暂停按钮 这是 AS3 我该怎么做 它需要能够播放 F4V 文件 如果制作其他功能很简单 例如全屏 显示时间线上已加载视频的
  • RFC 2854 如何废弃 RFC 1867?

    如何 或为什么 2854 过时的 1867 这可能只是因为我不理解如何阅读 RFC 但据我所知 1867 描述了文件上传如何与 HTML 表单一起工作 而 2854 是关于 HTML 表单中未使用的 MIME 类型 两个完全不同的东西 RF
  • “安全条件不满足”响应 APDU 是什么意思?

    我正在使用 Android NFC API 玩我的 NFC 卡 我被这个 APDU 响应困住了 安全条件不满足 SW1 69 SW2 82 谁能向我解释一下这个回复是什么意思 这是一个相关问题 69 82 安全条件不满足 Android N
  • 如何将 Apple 脚本的输出返回到 macOS 中的状态栏?

    我正在编写一个脚本 该脚本会在一个应用程序中查找您执行某项活动所花费的时间 然后在 Mac 的状态栏中显示该数字 就像右上角不断计数的时钟一样 我见过其他类似的人可以向您显示同一区域的 IP 这与我想要实现的目标很接近 我认为我的脚本可以持
  • Mongo 聚合与 Java for 循环和性能

    我存储了以下 mongo 文档 Field1 ABC Field2 Field3 ABC1 Field4 id 123 id 234 id 345 Field3 ABC2 Field4 id 123 id 234 id 345 Field3
  • 通过重命名旧表然后填充新版本来将表停机时间降至最低?

    我有一些左右的永久桌子需要每晚重建 为了使这些表尽可能长时间地 活动 并且也提供仅备份前一天数据的可能性 另一位开发人员含糊地建议 当夜间构建发生时 采取与此类似的路线 创建永久表 构建版本 例如 tbl build Client 重命名活
  • MYSQL 中的批量插入

    在 MS SQL 上 我可以使用下面的 sql 命令进行批量插入 BULK INSERT myDatabase MyTable FROM C MyTextFile txt WITH FIELDTERMINATOR 现在我想在 MySQL 上
  • 如何计算JavaScript中的图像加载/渲染时间?

    有没有办法使用 javascript jquery 查找网页中的图像加载 渲染时间 这里正确的答案是使用 Chrome 或 Firefox Firebug 等浏览器内置的开发工具 它会告诉您页面中所有资源的加载时间 这些工具可以访问纯 Ja
  • PHP - 遍历文件夹并显示 HTML 内容

    我目前正在尝试开发一种方法来概述我多年来创建和 合法 下载的所有不同的网页模板 我想过像这样展示它们WordPress正在使用一个小的预览窗口预览其模板 显示带有样式和所有内容的具体文件 如何将它们分为行和列并创建Ajax模式窗口在预览和分
  • 提高远程桌面上的 WPF 应用程序速度?

    在我们的场景中 我们有一个wpf应用程序 供用户通过远程桌面使用 我们发现用户体验非常慢 对于改善这种情况下的用户体验有什么建议吗 其中一点可能是禁用任何动画 故事板 并避免在 UI 中使用渐变 更多想法值得赞赏 对于渐变来说 这不像多个渲
  • unix 中正则表达式的语法错误

    我尝试找到一个与 1 到 999 之间的任何数字匹配的正则表达式 当使用钩子时我收到语法错误 bash syntax error near unexpected token 当我不使用钩子时 什么也不会发生 我的正则表达式是 egrep 1
  • Android 操作栏:我可以替换 appcompat v7 中的自定义标题吗

    我想在肌动蛋白条的左侧添加自定义操作标题 替换为默认标题 如下图所示 显示默认图像 在这里我想添加这个标题 您需要更改操作栏中的徽标和标题 您可以使用 getActivity getActionBar setTitle your title
  • Perl:如何使所需脚本中的变量在所需脚本中可用

    example out pl my our local global whatever var test require inside pm 里面 pm print var 我不想使用软件包 它超出了我的需求 谢谢 You are alwa
  • 对数组进行排序所需的最少操作数

    我正在尝试练习解决 Codeforces 中的问题 它通过将数组的元素移动到数组的开头或结尾来对数组进行排序 起初我认为它是最长的递增子序列 但在某些情况下它不起作用 例如 如果输入是 4 1 2 5 3 则 LIS 是 3 但问题的答案是