贪心,从大到小排列,计算数量最少的下降序列,和zoj1025很类似
#include <iostream>
#include <memory.h>
#include <algorithm>
#include <functional>
using namespace std;
const int maxn=3010;
int lev[maxn];
int n;
int main(){
while (scanf("%d",&n)==1)
{
for (int i=0;i<n;++i)scanf("%d",&lev[i]);
sort(lev,lev+n,greater<double>());
int ans=0;
bool vis[maxn]={0};
for (int i=0;i<n;++i)
{
if(!vis[i]){
vis[i]=1;
ans++;
double le=lev[i];
for (int j=i+1;j<n;++j)
{
if(!vis[j]&&le>lev[j]){
vis[j]=1;
le=lev[j];
}
}
}
}
printf("%d\n",ans);
}
}