zoukankan      html  css  js  c++  java
  • hdu 5500 Reorder the Books(规律)

    题意:

      有一个1→n的排列形成的数列,我们要用最少的操作次数把这个数列从小到大排序,每次操作都是把一个数放到整个数列的最前面。

    思路:

           首先最大的数n是不用操作的(其他数操作好了,n自然在最后面了)。先找到数n的位置,在n之前找n-1,若没找到n-1,则n-1需要操作,所有小于n-1的数均需要操作;若找到了n-1,再接着往前依次找n-2,n-3,。。。假如数k找不到了,那就是至少需要k次操作。

    复杂度O(n)。

     1 #pragma comment(linker, "/STACK:1024000000,1024000000")
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<math.h>
     7 #include<algorithm>
     8 #include<queue>
     9 #include<set>
    10 #include<bitset>
    11 #include<map>
    12 #include<vector>
    13 #include<stdlib.h>
    14 #include <stack>
    15 using namespace std;
    16 #define PI acos(-1.0)
    17 #define max(a,b) (a) > (b) ? (a) : (b)
    18 #define min(a,b) (a) < (b) ? (a) : (b)
    19 #define ll long long
    20 #define eps 1e-10
    21 #define MOD 1000000007
    22 #define N 26
    23 #define inf 1e12
    24 int n;
    25 int a[N];
    26 int main()
    27 {
    28    int t;
    29    scanf("%d",&t);
    30    while(t--){
    31        scanf("%d",&n);
    32        for(int i=0;i<n;i++){
    33            scanf("%d",&a[i]);
    34        }
    35        int ans=n;
    36        int ed=n-1;
    37 
    38        while(ed>=0){
    39            if(a[ed]==ans) ans--;
    40            ed--;
    41        }
    42        printf("%d
    ",ans);
    43    }
    44     return 0;
    45 }
    View Code
  • 相关阅读:
    Delphi Excel 操作大全
    ThreadLocal类
    MyBatis实战总结
    MyBatis入门
    Mybatis逆向工程
    2020年全国高校计算机能力挑战赛初赛java组
    集合论基础
    命题与逻辑
    Redis技术概述
    UML图中6种箭头的含义
  • 原文地址:https://www.cnblogs.com/UniqueColor/p/4884622.html
Copyright © 2011-2022 走看看