首页 > 其他分享 >最小的调整次数 od

最小的调整次数 od

时间:2024-02-01 13:58:36浏览次数:20  
标签:instruction 移出 od 最小 queue 次数 添加 指令 数据

最小调整顺序次数、特异性双端队列 逻辑分析

题目描述

有一个特异性的双端队列,该队列可以从头部或尾部添加数据,但是只能从头部移出数据.小A依次执行2n个指令往队列中添加数据和移出数据。其中n个指令是添加数据(可能从头部添加、也可能从尾部添加),依次添加1到n;n个指令是移出数据

现在要求移除数据的顺序为1到n.

为了满足最后输出的要求,小A可以在任何时候调整队列中数据的顺序.

请问小A最少需要调整几次才能够满足移除数据的顺序正好是1到n;

输入描述

第一行一个数据n,表示数据的范围。

接下来的2n行,其中有n行为添加数据,指令为:

"head addx”表示从头部添加数据X
"tail addx”表示从尾部添加数据X,
另外n行为移出数据指令,指令为:“remove”的形式,表示移出1个数据1≤n≤3*10^5

所有的数据均合法

输出描述

一个整数,表示 小 A 要调整的最小次数

`def min_adjustment(instructions):
queue = []
adjustments = 0
target = 1

for instruction in instructions:
    if instruction.startswith("head"):
        _, data = instruction.split()
        queue.insert(0, int(data))
    elif instruction.startswith("tail"):
        _, data = instruction.split()
        queue.append(int(data))
    elif instruction == "remove":
        print(queue)
        if queue[0] != target: 
            adjustments += 1 # 不是按照顺序输出的,需要排序下,只是说操作,就排序就可以
            queue.sort()
        target += 1  # 记录当前list坐标 12345
        queue.pop(0)  # 出队


return adjustments

输入是12345 这样输入, 输出也要是12345,如果输出不是顺序的,就需要sort排序下

n = int(input()) # 读取输入
instructions = [input() for _ in range(2 * n)]
result = min_adjustment(instructions)
print(result)
`

标签:instruction,移出,od,最小,queue,次数,添加,指令,数据
From: https://www.cnblogs.com/domm/p/18001059

相关文章

  • hashcode 是哪个类的方法
    hashCode 方法是 java.lang.Object 类的一个方法。在 Java 中,所有的类都直接或间接地继承自 Object 类,因此每个 Java 对象都继承了 hashCode 方法。这个方法用于返回对象的哈希码,是 Java 中实现哈希表的基础,如 HashMap、HashSet 等。hashCode 方法的通用合约包括:......
  • 3秒钟教你如何配置vscode中的vue3代码快速生成模版
    1.首先点击你的vscode左下角的齿轮设置按钮,然后点击配置用户代码片段2.输入vue搜索vue.json这个文件,然后点击这个文件3.接下来只需在原有的注释之下输入粘贴如下代码即可4.代码如下"vue3":{"prefix":"vue3","body":["<template>",......
  • 最小斯坦纳树
    最小斯坦纳树给定\(k\)个关键点必须选,选一些点,选一些边连接他们,求总边权最小。首先最终肯定选出一棵树。看到\(k\)的范围,果断状压。\(dp[i][S]\)表示以\(i\)为根,至少(不是恰好)包含\(S\)中的关键点的最小边权总和。如果最终的树中\(i\)的度数\(>1\),考虑把树分成两个......
  • HashCode的意义和作用
    HashCode的介绍哈希码是按照某种规则生成的int类型的数值哈希码并不是完全唯一的。让同一个类的对象按照自己不同的特征尽量的有不同的哈希码,但不是说不同的对象哈希码就一定不同,也有相同的情况。首先我们需要了解hashCode方法和equals方法两个重要的规范:规范1若重写了某个......
  • AtCoder Beginner Contest 337 D
    AtCoderBeginnerContest337DD-CheatingGomokuNarabe题意:\(W\)列的矩阵,矩阵由o、x、.三种字符组成。你可以进行若干次操作(可以不做),每次操作可以把矩阵中的一个.改成o。请问最少经过多少次操作后,能在矩阵中找到位于同一行或同一列的连续\(K\)个o。思路:这题......
  • 盘点一个Excel数据分割和explode()实战问题
    大家好,我是皮皮。一、前言前几天在Python白银交流群【JethroShen】问了一个Pandas数据处理的问题。问题如下:各位大佬这种情况我怎么处理一下啊?标记的商品内容后后面的数量是一一对应的想把它们铺开。下面是他自己写的代码:jigou_df=pd.read_excel(jigou_path)data={'商......
  • AtCoder Regular Contest 170
    A贪心。首先判无解。如果一个位置要变成A,那么它右边必须要有个B。如果一个位置要变成B,那么它右边必须要有个A。然后算答案,首先有一个明显的上限:\[\sum_{i=1}^{n}[s_i\neqt_i]\]假设我们有\(i\)位置要变成A,\(j\)位置要变成B,且\(i<j\),那么可以减少一次操作,扫一遍......
  • NodeJS框架对比 - Express、Koa、Egg、Nest等
     Express.jsExpress.js是Node.JS诞生之初,最早出现的一款框架,现在仍然很流行,作者是TJ。Express是基于回调,也是node中最常见的Error-First的模式(第一个参数是error对象)一个简单的Express服务器查看代码constexpress=require('express');constapp=express();/*......
  • Codeforces Round 921 (Div. 1)
    Preface被折纸狠狠地腐乳了,但好在手速够快光速写完前两题成功把Ohara_Rinne这个号也打上橙了之后就不开其它小号打了,也差不多该尝试去向上挑战了,不然一直呆在舒适圈内也没啥提升的说A.DidWeGetEverythingCovered?直接把序列自动机建出来,不妨设状态\((x,y)\)表示构造了长......
  • const copyStories = [...stories] 和 let storiesToDisplay = stories.slice(); 两
    constcopyStories=[...stories]和letstoriesToDisplay=stories.slice();两种复制数组的方式,哪种更优雅?在JavaScript中,constcopyStories=[...stories](使用扩展运算符)和letstoriesToDisplay=stories.slice()都可以用来复制数组,并且都能生成一个新的数组。这两种......