为什么代码只有65分

题目总版

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 代码如下:

include```c

<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; }


|