HihoCoder-1523(思维)

来源:互联网 发布:mac上的sfc模拟器 编辑:程序博客网 时间:2024/06/06 03:43

Q - 数组重排2  HihoCoder - 1523 

给定一个1-N的排列A1, A2, ... AN,每次操作小Hi可以选择一个数,把它放到数组的最左边。

请计算小Hi最少进行几次操作就能使得新数组是递增排列的。

Input

第一行包含一个整数N。

第二行包含N个两两不同整数A1, A2, ... AN。(1 <= Ai <= N)

对于60%的数据 1 <= N <= 20

对于100%的数据 1 <= N <= 100000

Output

一个整数代表答案

Sample Input
52 3 1 4 5
Sample Output
1

这题也是放了有点久是一道思维的题目

在想从后面往前面走  找连续的最长下降子序列到哪里断掉了就是那个i了  嗯 去尝试了一下 真的就A了 其实也是有点参考网上的代码觉得不用那么麻烦

比如

9

3 4 5 7 8 9 6 1 2

这样子根据9来说有7 8 9  而6在7的后面 所以 输出6 有六个要重新排

#include <stdio.h>#include <string.h>#include <stack>#include <algorithm>using namespace std;int pos[100005],digit[100005];int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&digit[i]);pos[digit[i]]=i;}for(int i=n-1;i>=1;i--){      if(pos[i]>pos[i+1])      {       printf("%d\n",i);       break;  }}    return 0;}


原创粉丝点击