CF #651B. Beautiful Paintings

来源:互联网 发布:谭咏麟你知我知被禁 编辑:程序博客网 时间:2024/05/16 15:31

题意:n个数,现在以任意的顺序排列,使a[i]+1>a[i],这样的对数最多。

分析:
方法一:先排序。对每一个数,向后扫描比它大的那个数,
方法二 :如果n个数都不相同,则必有n-1对符合要求,一旦有最大重复数字个数为m,则有n-1-m对。符合要求。

/*method ——1*//*#include<bits/stdc++.h>using namespace std;int a[1005],vis[1005];int main(){    int n;    while(~scanf("%d",&n))    {        for(int i=0;i<n;i++)            scanf("%d",a+i);        sort(a,a+n);        memset(vis,0,sizeof(vis));        int flag,num=0;        for(int i=0;i<n;i++)        {            flag=a[i];            for(int j=i+1;j<n;j++)                if(a[j]>flag&&(!vis[j]))                {                    num++;                    vis[j]=1;                    break;                }        }        printf("%d\n",num);    }    return 0;}

/*method --2*/#include<bits/stdc++.h>using namespace std;int a[1002],xx=0;int main(){    int n,x;    cin>>n;    for(int i=0;i<n;i++)        cin>>x,xx=max(xx,a[x]++);    printf("%d\n",n-xx-1);    return 0;}
0 0