陕西师范大学第七届程序设计竞赛网络同步赛 I 排队排队排队【数组任一位可以移动到队头,最少移动几次增序/数组指针操作】

链接:https://www.nowcoder.com/acm/contest/121/I
来源:牛客网

题目描述

    ACM竞赛队内要开运动会啦!!!!

    竞赛队内的一群阳光乐观积极的队员们迅速的在操场上站成了一支队伍准备开始热身运动。但教练看了一眼觉得队伍高高低低很不整齐。

教练想让大家从低到高站好,每次教练可以任选择一个人令他走到队首,教练想知道他要最少要进行几次这样的操作才能把队伍按从低到高排整齐(身高最低的人站在队首)。

输入描述:

第一行输入N(N<=1000)代表一共有N个队员
第二行输入N个数表示初始时的队伍所对应的每个人的身高(100<=身高<=300)(第一个输入的是队首,最后一个输入的是队尾)

输出描述:

输出教练所需要的最小操作步数
示例1

输入

2
183 185

输出

0
示例2

输入

3
173 186 166

输出

1

说明

一次操作将站在队尾身高为166的队员放在队首就形成了166 173 186的从低到高有序队伍

备注:

身高可能出现相同,身高都是整数。

 

【代码】:

#include<bits/stdc++.h>
#include<cstdio>
#include<string>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<cstring>
#include<set>
#include<queue>
#include<algorithm>
#include<vector>
#include<map>
#include<cctype>
#include<stack>
#include<sstream>
#include<list>
#include<assert.h>
#include<bitset>
#include<numeric>
#define debug() puts("++++")
#define gcd(a,b) __gcd(a,b)
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define fi first
#define se second
#define pb push_back
#define sqr(x) ((x)*(x))
#define ms(a,b) memset(a,b,sizeof(a))
#define sz size()
#define be begin()
#define pu push_up
#define pd push_down
#define cl clear()
#define lowbit(x) -x&x
#define all 1,n,1
#define rep(i,n,x) for(int i=(x); i<(n); i++)
#define in freopen("in.in","r",stdin)
#define out freopen("out.out","w",stdout)
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> P;
const int INF = 0x3f3f3f3f;
const LL LNF = 1e18;
const int maxn = 1e3 + 20;
const int maxm = 1e6 + 10;
const double PI = acos(-1.0);
const double eps = 1e-8;
const int dx[] = {-1,1,0,0,1,1,-1,-1};
const int dy[] = {0,0,1,-1,1,-1,1,-1};
const int mon[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const int monn[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int n,k,t;
int a[maxm],b[maxm];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i],b[i]=a[i];
    sort(b+1,b+n+1);
    int now=n;
    for(int i=n; i>=1; i--){
        if(a[i]==b[now]){
            now--;
        }
    }
    cout<<now<<endl;
}

/*
5
i 1 2 3 4 5

a 4 7 3 8 1
b 1 3 4 7 8

倒序对比,若相等控制排序数组指针前移,now--是不需要改变的位置
*/

 

posted @ 2018-05-14 21:23  Roni_i  阅读(295)  评论(0编辑  收藏  举报