首页 > 其他分享 >CF1407D Discrete Centrifugal Jumps

CF1407D Discrete Centrifugal Jumps

时间:2023-02-02 00:35:14浏览次数:64  
标签:Jumps Centrifugal Discrete DP CF1407D 复杂度 dp

CF1407D Discrete Centrifugal JumpsTJ

蒟蒻的尸路:

考场上看到这题果断DP(这是我第一次在考场自己想DP),然后 $ O ( N ^ 3 ) $原地爆炸。

改成了 $ O ( N ^ 2 ) $ 还是炸,想到可以优化的时候……就没时间了……

我太蒻了……

DP的蜕变:

因为跳跃的步骤不影响后面的答案,不难想到一个线性DP直接莽上去:$ dp_i = \min (dp_j) + 1 $,其中 $ j $ 满足题目中的限制。

然后 $ O ( N ^ 3 ) $ 的时间复杂度直接炸开……

这也不去说什么小优化了,因为不难发现可以直接整到 $ O ( N ) $。

以第二个条件举例,手模一下后就会发现,若要更新 $ i $,那么当一个 $ j $ 出现并不满足 $ h_j < h_i $ 时,$ j $ 前面的都不可能成为候选项(因为包含 $ j $ 的都不满足要求),因此,我们可以直接排除它们。

想一下,这像什么?单调栈的板子题!

具体地,我们可以直接采用两个单调栈维护条件 2 和条件 3 的决策集合并进行转移,达到 $ O ( N ) $ 的时间复杂度,轻松 AC 本题。

这里提一嘴单调栈,是指用栈维护一个决策集合,利用单调性不停地排除无效选项(如本题删去了不合法的选项),降低总的时间复杂度。由于每个元素至多进出栈各一次,所以可以做到线性复杂度。

代码的实现:

给出伪代码(我不会写伪代码,我猜是这样):

    dp[1]=0;
    s1.push(1),s2.push(1);//边界与初始化
    for(int i=2;i<=n;i++){
        dp[i]=dp[i-1]+1;//条件1
        while(s1的栈顶不满足){
            取出栈顶并出栈
            if(可以用来更新答案) 用栈顶更新答案
        }
        s2同上
        i入栈
    }

代码就不放了,思维最重要

标签:Jumps,Centrifugal,Discrete,DP,CF1407D,复杂度,dp
From: https://www.cnblogs.com/LQ636721/p/17084577.html

相关文章

  • [LeetCode] 1824. Minimum Sideway Jumps
    Thereisa 3laneroad oflength n thatconsistsof n+1 points labeledfrom 0 to n.Afrog starts atpoint 0 inthe second lane andwantsto......
  • CentOS7下配置使用JumpServer 堡垒机 (图文教程)
    前面介绍了如何在《CentOS7下搭建JumpServer堡垒机》,基于这篇文章的环境搭建过程,接着介绍安装后的的功能配置使用。首次wbe登录,https://ip:80,默认账号密码:admin,admin;这......
  • JumpServer 对接 Syslog 日志系统
    概述本文章主要介绍JumpServer如何对接Syslog日志系统,并将JumpServer的日志输出到Syslog服务器中。配置测试Syslog服务器:Centos7(关闭iptables/firewalld或者开......
  • JumpServer 如何通过 SFTP 进行文件的上传下载。
    概述本文章主要介绍如何经过JumpServer在SFTP方式下在本机与纳管的Linux服务器之间进行上传下载。登录JumpServer的SFTP页面通过sftp-p2222JMS用户名@JMS登录I......
  • 如何使用 JumpServer 推送资产的系统用户?
    概述本篇文章主要介绍在纳管的资产没有某个系统用户的情况下如何通过JumpServer进行创建并推送到相应的服务器上。文章可以分为Linux系统用户推送和Windows系统用户推......
  • JumpServer 审计录像
    概述本文章主要介绍关于录像文件存放地址、录像保存逻辑、配置外部存储存储录像以及录像文件的播放。一、录像文件存储1、录像文件的存储目录无法修改,仅能调整一级配置目录......
  • VSCode 连接 JumpServer 资产
    概述本文主要介绍如何通过VisualStudioCode(以下简称VSCode)的Remote-SSH插件直连JumpServer所纳管的Linux-SSH协议资产,从而进行远程开发。VSCode是一个运行于Mac......
  • JumpServer 登录密码忘记及用户锁定如何处理
    概述本文主要介绍堡垒机使用过程中产生的密码相关问题。主要包括忘记密码、密码过期、以及登录频繁账号被锁定。忘记密码,密码过期问题描述在使用JumpServer的过程中,可能会......
  • JumpServer & Windows 资产无法连接
    概述本文主要介绍Windows资产突然无法登陆时的情况。详细信息现象:登陆Windows资产时有错误提示。排查思路使用电脑自带的mstsc工具登陆,确认此资产上的用户远程登陆正......
  • JumpServer 常用的 MFA 工具
    JumpServer常用的MFA工具安卓版:googleauthenticatormicrosoftauthenticator阿里云App虚拟MFACKEY令牌IOS版:googleauthenticatormicrosoftauthenticator阿里云ap......