sastronaut @ 2024-11-02 10:45:19
csp-s第一题:编号#11231 为什么过不了?用取最大值的方法却可以过 代码如下:
#include<bits/stdc++.h>
using namespace std;
int a[100001];
int n;
int b[100001];
bool cmp(int a,int b)
{
return a<b;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n,cmp);
int flag=1;
int flag1=a[1];
for(int i=1;i<=n;i++)
{
if(a[i]==flag1)
{
b[flag]++;
}
else
{
flag++;
flag1=a[i];
b[flag]++;
}
}
int ans=0;
for(int i=1;i<flag;i++)
{
if(b[i+1]>=b[i])
{
b[i]=0;
}
else
{
b[i]=b[i]-b[i+1];
}
}
for(int i=1;i<=flag;i++)
{
ans=ans+b[i];
}
cout<<ans;
return 0;
}
求解! 谢谢!
by llz2024 @ 2024-11-02 11:18:11
@sastronaut 代码如下:
<bits/stdc++.h> using namespace std; int a[100001]; int n; int b[100001]; int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+1+n); int flag=1; int flag1=a[1]; for(int i=1;i<=n;i++){ if(a[i]==flag1) b[flag]++; else{ flag++; flag1=a[i]; b[flag]++; } } int ans=0; for(int i=1;i<flag;i++) if(b[i+1]>=b[i]) b[i]=0; else b[i]=b[i]-b[i+1],b[i+1]+=b[i],b[i]=0; for(int i=1;i<=flag;i++) ans=ans+b[i]; cout<<ans; return 0; }