75分版本:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int r[n+5];
memset(r,0,sizeof(r));
int ans=n;
int vis[n+5];
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
{
cin>>r[i];
}
sort(r+1,r+n+1);
for(int i=1;i<n;i++)
{
int j=i+1;
if(vis[n]!=0)
{
break;
}
if(r[n]==r[i])
{
break;
}
while((r[i]>=r[j]||vis[j]!=0)&&j<=n)
{
j++;
}
if(r[i]<r[j]&&j<=n)
{
vis[i]=1;
vis[j]=2;
ans--;
}
}
cout<<ans;
return 0;
}
55分版本:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n;
int r[N];
int vis[N];
int main()
{
cin>>n;
memset(r,0,sizeof(r));
int ans=n;
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
{
cin>>r[i];
}
sort(r+1,r+n+1);
for(int i=1;i<n;i++)
{
int j=i+1;
if(vis[n]!=0)
{
break;
}
if(r[n]==r[i])
{
break;
}
while((r[i]==r[j]||vis[j]!=0)&&j<=n)
{
j++;
}
if(r[i]<r[j]&&j<=n)
{
vis[i]=1;
vis[j]=2;
ans--;
}
}
cout<<ans;
return 0;
}
第一个顺利卡过了一半的 n≤105,第二个只卡过了一小部分。卒。