• CF605A Sorting Railway Cars(递推)


    题目描述

    An infinitely long railway has a train consisting of n cars, numbered from 1 to n (the numbers of all the cars are distinct) and positioned in arbitrary order. David Blaine wants to sort the railway cars in the order of increasing numbers. In one move he can make one of the cars disappear from its place and teleport it either to the beginning of the train, or to the end of the train, at his desire. What is the minimum number of actions David Blaine needs to perform in order to sort the train?

    输入输出格式

    输入格式:

    The first line of the input contains integer n ( 1<=n<=100000 ) — the number of cars in the train.

    The second line contains n integers pi  ( 1<=pi<=n  pi≠pj  if i≠j  ) — the sequence of the numbers of the cars in the train.

    输出格式:

    Print a single integer — the minimum number of actions needed to sort the railway cars.

    题意翻译

    题意

    给出一个 1 到 n 的排列,每次操作可以将某个位置的数字移动到最前面或最后面,求将排列从小到大排序的最小操作次数

    如:4 1 2 5 3 操作1:将5和3换一下变成4 1 2 3 5

    操作2:将1 2 3和 4换一下变成 1 2 3 4 5 在此后即完成要求。所以最小操作次数为2。

    输入:

    第一行 为长度 nnn ; 第二行为原来的顺序两个数之间有空格。

    输出:

    最小操作次数

    范围

    1<=n<=100000

    1=<p[i]<=n

     p[i]!=p[j] 当 i!=j

    思路:

    代码极短,思路可不简单

    每次往队首或往队末放一辆车,且要求最后车都按顺序排列

    那么这个问题首先就要考虑无效操作

    如果你的当前这辆车编号比当前位置小,

    那你显然应该往前放

    如果你往后放那你将来要不把前面的往后放

    要么再把这个放回去

    明显不会更优

    所以这个问题最后转化成了在这个序列里最多有哪些车可以不用改变位置

    哪些车不用变位置呢?

    因为最后的排列是连续且递增的

    那么明显,能剩下来的,就是以前最长的已经排列好的子序列

    也就是最长连续上升子序列

    有人会说:这下就简单了,我会导弹拦截!

    。。。有这么麻烦吗?

    我们知道这个要求的是一个连续的序列

    所以就简单了

    比如说7这个数

    到他为止的最长连续上升序列的长度f[7]一定是f[6]+1

    所以就好办喽

    代码:

    #include<iostream>
    #include<cstdio>
    #define rii register int i
    using namespace std;
    int n,dp[100005],ans;
    int main()
    {
        int ltt;
        scanf("%d",&n);
        for(rii=1;i<=n;i++)
        {
            scanf("%d",&ltt);
            dp[ltt]=dp[ltt-1]+1;
            ans=max(ans,dp[ltt]);
        }
        cout<<n-ans;
    }
  • 相关阅读:
    git 学习笔记
    review一下上一年的积累
    修改数据库用户的IP地址
    phpstudy 设置局域网内访问本地项目
    关于layui的时间空间 点击时间直接确定并关闭窗口
    关于tp5.1隐藏入口文件出现No input file specified.的解决办法
    关于在TP中使用webupload切片上传文件与CI框架中切片上传文件
    关于使用微信浏览网页打开键盘会把网页顶上去,是弹窗无法相应的问题解决
    VUE的安装及使用(待续)
    前端实现调动打印机部分打印界面
  • 原文地址:https://www.cnblogs.com/ztz11/p/9323963.html
Copyright © 2020-2023  润新知