回炉重造的代码只有50分,只对了1 6 7 8 10求助!

P1042 [NOIP2003 普及组] 乒乓球

AK47isYYDS @ 2024-12-14 18:44:36

只对了1 6 7 8 10

#include<bits/stdc++.h>
using namespace std;
int x,y,k,cnt,a[70070],t;
char c;
int main()
{
    while(cin>>c)
    {
        if(c=='E') break;
        k++;
        a[k]=a[k-1];
        if(c=='W') a[k]++;
    }
    if(k==0)
    {
        cout<<"0:0"<<endl<<endl<<"0:0"<<endl;
        return 0;
    }
    for(int i=11;i<=k;i=i+11)
    {
        cout<<a[i]-a[i-11]<<":"<<11-(a[i]-a[i-11])<<endl;
        t=t+11;
    }
    cout<<a[k]-a[t]<<":"<<k-t-(a[k]-a[t])<<endl;
    cout<<endl;
    t=0;
    for(int i=21;i<=k;i=i+21)
    {
        cout<<a[i]-a[i-21]<<":"<<21-(a[i]-a[i-21])<<endl;
        t=t+21;
    }
    cout<<a[k]-a[t]<<":"<<k-t-(a[k]-a[t]);
}

by guoxinhang @ 2024-12-15 15:32:16

AC代码,仅供参考

#include<bits/stdc++.h>
using namespace std;
int a[5050],b[5050],e[5050],d[5050]; 
int main()
{
    int cnt1=0,cnt2=0,cnt3=0,cnt4=0,i=0,k=0,sum=0;
    char c;
    while(true)
    {
        cin>>c;
        if(c=='E')
        {
            if(cnt1!=0||cnt2!=0)
            {
                a[i]=cnt1;
                b[i]=cnt2;
                i++;
            }
            if(cnt3!=0||cnt4!=0)
            {
                e[k]=cnt3;
                d[k]=cnt4;
                k++;
            }
            break;
        }   
        sum++;
        if(c=='W')
        {
            cnt1++;
            cnt3++;
        }
        if(c=='L') 
        {
            cnt2++; 
            cnt4++;     
        }
        if((cnt1>=11||cnt2>=11)&&abs(cnt1-cnt2)>=2)
        {
            a[i]=cnt1;
            b[i]=cnt2;
            i++;
            cnt1=0;
            cnt2=0;
        }
        if((cnt3>=21||cnt4>=21)&&abs(cnt3-cnt4)>=2)
        {
            e[k]=cnt3;
            d[k]=cnt4;
            k++;
            cnt3=0;
            cnt4=0;
        }
    }
    if(i==0&&k==0)
    {
        cout<<0<<':'<<0<<endl;
        cout<<endl;
        cout<<0<<':'<<0;
    }
    for(int j=0;j<i;j++)
    {
        cout<<a[j]<<':'<<b[j]<<endl;
    }
    if(sum==11)
    {
        cout<<0<<':'<<0<<endl;
    }
    cout<<endl;
    for(int j=0;j<k;j++)
    {
        cout<<e[j]<<':'<<d[j]<<endl; 
    }
    if(sum==21)
    {
        cout<<0<<':'<<0<<endl;
    }
    return 0;
}

AC记录


|