http://codeforces.com/contest/651/problem/B

题意:给你n个数字,要求你合理的按顺序排列这些数字,使得满足a[i+1]>a[i]的个数尽可能多,输出最多的



个数;



#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
#define MM(a) memset(a,0,sizeof(a))
typedef long long ll;
typedef unsigned long long ULL;
const double eps = 1e-10;
const int inf = 0x3f3f3f3f;
const int big=50000;
const double pi=acos(-1);
const int mod=100000000;
int max(int a,int b) {return a>b?a:b;};
int min(int a,int b) {return a<b?a:b;};
int a[1005],num[1005],temp;
int main()
{
int n,k;
while(~scanf("%d",&n))
{
int maxn=0;
        memset(num,0,sizeof(num));
for(int i=1;i<=n;i++)
{
                scanf("%d",&a[i]);
                num[a[i]]++;
                maxn=max(maxn,num[a[i]]);
}
        printf("%d\n",n-1-(maxn-1));
}
return 0;
}


分析:有n个数字,那么,有n-1个间隔,统计这些数字中重复次数最多的数字出现的次数为m次,那么其中就有


m-1个间隔是无效的。(神思路)