zoukankan      html  css  js  c++  java
  • Trains 归纳法

    【问题描述】
    山山非常喜欢他的玩具火车。这列玩具火车总共有 n 节车厢,他给火车的每一节车厢
    按照 从车头到车尾的顺序标上了序号 1 ~ n。
    山山家来了一个幼儿园的小朋友岳岳。岳岳非常调皮,他把山山的玩具火车拆了又拼,
    拼了又拆。岳岳走之后,山山发现他的玩具火车的车厢顺序被完全弄乱了,不过他不担心,
    因为他已经给车厢按顺序标过号了。山山想把自己的火车给拼回原来的样子,但是因为一些
    原因,他想调整尽量少的车厢,并且遵循以下两种操作方式:
    1. 将某节车厢拆下来,拼接到车头;
    2. 将某节车厢拆下来,拼接到车尾。
    注意, 当某节车厢被拆下来后,山山会将它两边的车厢拼在一起,使得这些车厢始终
    是一列完整的火车。
    由于山山还只是一名小学生,他的计算能力不是很强,于是他希望你能帮他算出最少需
    要调整几次车厢就能把玩具火车恢复原状。


    【输入格式】
    输入文件名为 train.in。
    第一行为一个正整数 n。
    第二行为 n 个整数,表示被弄乱后的火车从车头到车尾每一节车厢上的标号,保证其为一
    个 1 ~ n 的排列。


    【输出格式】
    输出文件名为 train.out。
    输出仅一行一个整数 ans 表示答案。


    【样例输入与输出】
    train.in
    5
    4 1 2 5 3
    train.out
    2


    【数据范围】
    对于 20%的数据:0 < n <= 100
    对于另外 20%的数据:0 < n <= 200000,保证数列单调不上升
    对于 100%的数据:0 < n <= 200000


    在这道题中,我们可以把火车移到前面或后面,目标都是保证最后的升序,而且当前怎么移对其他火车的位置是没有影响的。

    所以我们直接统计最长连续上升子序列,n减去这个子序列就是答案。

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    
    #define ll long long
    #define il inline
    #define db double
    
    #define max(a,b) ((a)>(b)?(a):(b))
    
    using namespace std;
    
    int f[200045];
    
    int main()
    {
    	freopen("train.in","r",stdin);
    	freopen("train.out","w",stdout);
    	
    	int n;
    	cin>>n;
    
    	int ans=0;
    
    	int x;
    	for(int i=1;i<=n;i++)
    		{
    			scanf("%d",&x);
    			f[x]=f[x-1]+1;
    			ans=max(ans,f[x]);
    		}
    
    	printf("%d
    ",n-ans);
    
    	return 0;
    }
    
  • 相关阅读:
    flink 读取kafka 数据,partition分配
    Flink 报错 "Could not find a suitable table factory for 'org.apache.flink.table.factories.StreamTableSourceFactory' in the classpath"
    flume接收http请求,并将数据写到kafka
    【翻译】Flume 1.8.0 User Guide(用户指南) Processors
    【翻译】Flume 1.8.0 User Guide(用户指南) Channel
    【翻译】Flume 1.8.0 User Guide(用户指南) Sink
    【翻译】Flume 1.8.0 User Guide(用户指南) source
    【翻译】Flume 1.8.0 User Guide(用户指南)
    Apache Flink 简单安装
    Java之使用IDE
  • 原文地址:https://www.cnblogs.com/gshdyjz/p/7681916.html
Copyright © 2011-2022 走看看