我的2020 CSP-S考场原代码及betway必威体育官方民间自测结果

2020-11-11 11:39:42


以下代码为本人考场原代码,评测结果为注释掉freopen后用betway必威体育官方民间数据自测的评测结果

2020 CSP-S 爆零记

T1 儒略日(Julian)

Julian,指聚敛,搜刮民间财产,指480报名费

代码: (警告:此题代码过长,请谨慎阅读!)

//公元1年1月1日=儒略日1721424
#include <iostream>
#include <cstdio>
using namespace std;
int Q,Year=4713,Month=1,Date=1,Days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
long long Julian;
bool BC=true;
void Add()
{
    if(Julian>=1721424)//公元后
    {
        Year=1;
        BC=false;
        Julian-=1721424;
        if(Julian>=577737)//1582年10月15日及之后
        {
            Year=1582;
            Month=10;
            Date=15;
            Julian-=577737;
            if(Julian>=78)
            {
                Year=1583;
                Month=1;
                Date=1;
                Julian-=78;
            }
            else
            {
                if(Julian>=17)
                {
                    Month=11;
                    Date=1;
                    Julian-=17;
                    for(int i=11;i<=12;++i)
                    {
                        if(Julian>=Days[i])
                        {
                            ++Month;
                            Julian-=Days[i];
                        }
                        else
                        {
                            Date+=Julian;
                            Julian =0;
                            goto Final_End1;
                        }
                    }
                    Date+=Julian;
                    Julian =0;
                    goto Final_End1;
                }
                else
                {
                    Date+=Julian;
                    Julian=0;
                    goto Final_End1;
                }
            }
            Year+=400*(Julian/146097);//400年的天数为146097天
            Julian%=146097;
            if(Julian>=6209)
            {
                Year+=17;
                Julian-=6209;
                if(Julian>=366)
                {
                    ++Year;
                    Julian-=366;
                    Year+=4*(Julian/1461);//4年的天数为1461天
                    Julian%=1461;
                    for(int  i=1;i<=3;++i)
                    {
                        for(int j=1;j<=12;++j)
                        {
                            if(Julian>=Days[j])
                            {
                                ++Month;
                                Julian-=Days[j];
                            }
                            else
                            {
                                goto End3;
                            }
                        }
                        if(Month==13)
                        {
                            Month=1;
                            ++Year;
                        }
                    }
                    Days[2]=29;
                    for(int j=1;j<=12;++j)//闰年
                    {
                        if(Julian>=Days[j])
                        {
                            ++Month;
                            Julian-=Days[j];
                        }
                        else
                        {
                            Days[2]=28;
                            goto End3;
                        }
                    }
                    if(Month==13)
                    {
                        Month=1;
                        ++Year;
                    }
                    Days[2]=28;
                }
                else
                {
                    for(int j=1;j<=12;++j)//闰年
                    {
                        if(Julian>=Days[j])
                        {
                            ++Month;
                            Julian-=Days[j];
                        }
                        else
                        {
                            goto End3;
                        }
                    }
                    if(Month==13)
                    {
                        Month=1;
                        ++Year;
                    }
                }
            }
            else
            {
                Year+=4*(Julian/1461);//4年的天数为1461天
                Julian%=1461;
                for(int  i=1;i<=1;++i)
                    {
                        for(int j=1;j<=12;++j)
                        {
                            if(Julian>=Days[j])
                            {
                                ++Month;
                                Julian-=Days[j];
                            }
                            else
                            {
                                goto End3;
                            }
                        }
                        if(Month==13)
                        {
                            Month=1;
                            ++Year;
                        }
                    }
                    Days[2]=29;
                    for(int j=1;j<=12;++j)//闰年
                    {
                        if(Julian>=Days[j])
                        {
                            ++Month;
                            Julian-=Days[j];
                        }
                        else
                        {
                            Days[2]=28;
                            goto End3;
                        }
                    }
                    if(Month==13)
                    {
                        Month=1;
                        ++Year;
                    }
                    Days[2]=28;
                    for(int  i=1;i<=2;++i)
                    {
                        for(int j=1;j<=12;++j)
                        {
                            if(Julian>=Days[j])
                            {
                                ++Month;
                                Julian-=Days[j];
                            }
                            else
                            {
                                Days[2]=28;
                                goto End3;
                            }
                        }
                        if(Month==13)
                        {
                            Month=1;
                            ++Year;
                        }
                    }
            }
            Days[2]=28;
            End3:;
            Date+=Julian;
            Julian=0;
            goto Final_End1;
        }
        else if(Julian==577736)//1582年10月4日
        {
            Year=1582;
            Month=10;
            Date=4;
            Julian=0;
            goto Final_End1;
        }
        else//1582年10月3日及之前
        {
            Year+=4*(Julian/1461);//4年的天数为1461天
            Julian%=1461;
            for(int  i=1;i<=3;++i)
            {
                for(int j=1;j<=12;++j)
                {
                    if(Julian>=Days[j])
                    {
                        ++Month;
                        Julian-=Days[j];
                    }
                    else
                    {
                        goto End1;
                    }
                }
                if(Month==13)
                {
                    Month=1;
                    ++Year;
                }
            }
            Days[2]=29;
            for(int j=1;j<=12;++j)//闰年
            {
                if(Julian>=Days[j])
                {
                    ++Month;
                    Julian-=Days[j];
                }
                else
                {
                    goto End1;
                }
            }
            if(Month==13)
            {
                Month=1;
                ++Year;
            }
            End1:;
            Days[2]=28;
            Date+=Julian;
            Julian=0;
            goto Final_End1;
        }
        Final_End1:;

        cout<<Date<<" "<<Month<<" "<<Year<<endl;
        return ;
    }
    else//公元前
    {
        Year-=4*(Julian/1461);
        Julian%=1461;
            Days[2]=29;
            for(int j=1;j<=12;++j)//闰年
            {
                if(Julian>=Days[j])
                {
                    ++Month;
                    Julian-=Days[j];
                }
                else
                {
                    Days[2]=28;
                    goto End2;
                }
            }
            if(Month>12)
            {
                Month-=12;
                --Year;
            }
            Days[2]=28;
            for(int  i=1;i<=3;++i)
            {
                for(int j=1;j<=12;++j)
                {
                    if(Julian>=Days[j])
                    {
                        ++Month;
                        Julian-=Days[j];
                    }
                    else
                    {
                        goto End2;
                    }
                }
                if(Month>12)
                {
                    Month-=12;
                    --Year;
                }
            }
            End2:;
            Date+=Julian;
            Julian=0;
            if(Date>Days[Month])
            {
                Date-=Days[Month];
                ++Month;
            }
            if(Month>12)
            {
                Month-=12;
                ++Year;
            }
        cout<<Date<<" "<<Month<<" "<<Year<<" BC"<<endl;
        return ;
    }
}
int main()
{
    freopen("julian.in","r",stdin);
    freopen("julian.out","w",stdout);
    scanf("%d",&Q);
    for(int i=1;i<=Q;++i)
    {
        Year=4713;
        Month=1;
        Date=1;
        scanf("%lld",&Julian);
        Add();
    }
}

评测结果: 万花丛中一点绿

万花丛中一点绿

T2 动物园(zoo)

代码: (这个还算正常的)

#include <iostream>
#include <cstdio>
using namespace std;
int n,m,c,k,Animal[1000001],p[1000001],q[1000001];
bool Feed[100000001]={},Buy[100000001]={};
long long Ans=0LL;
long long Quickpow(int x,int y)
{
    long long Result=1;
    int Base=x;
    while(y!=0)
    {
        if(y%2!=0)
        {
            Result*=(long long)Base;
        }
        Base*=Base;
        y>>=1;
    }
    return Result;
}
int main()
{
    freopen("zoo.in","r",stdin);
    freopen("zoo.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&c,&k);
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&Animal[i]);
        Feed[Animal[i]]=1;
    }
    for(int i=1;i<=m;++i)
    {
        scanf("%d%d",&p[i],&q[i]);
    }
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
        {
            if(Buy[q[j]]==0)
            {
                if((Animal[i]&Quickpow(2,p[j]))!=0)
                {
                    Buy[q[j]]=1;
                }
            }
        }
    }
    for(int i=0;i<=Quickpow(2,k)-1;++i)
    {
        if(Feed[i]==0)
        {
            for(int j=1;j<=m;++j)
            {
                if(((i&Quickpow(2,p[j]))!=0)&&Buy[q[j]]==0)
                {
                    goto Next;
                }
            }
            ++Ans;
            Next:;
        }
    }
    cout<<Ans<<endl;
    return 0;
}

评测结果: 彩 虹 分 析 会

彩 虹 分 析 会

T3 函数调用(call)

代码: (这个也挺正常的)

#include <iostream>
#include <cstdio>
using namespace std;
int n,m,Count=0,g[1000001],Q,f;
long long a[100001];
const int MOD=998244353;
struct FFunction
{
    int T,P,V,Head,Tail;
}Function[100001];
void Add(int x)
{
    a[Function[x].P]+=Function[x].V;
    return ;
}
void SuperAdd(int x)
{
    for(int i=1;i<=n;++i)
    {
        a[i]*=Function[x].V;
        a[i]%=MOD;
    }
    return ;
}
void Use(int x)
{
    for(int i=Function[x].Head;i<=Function[x].Tail;++i)
    {
        if(Function[g[i]].T==1)
        {
            Add(g[i]);
        }
        else if(Function[g[i]].T==2)
        {
            SuperAdd(g[i]);
        }
        else
        {
            Use(g[i]);
        }
    }
}
int main()
{
    freopen("call.in","r",stdin);
    freopen("call.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
    {
        scanf("%lld",&a[i]);
        a[i]%=MOD;
    }
    scanf("%d",&m);
    for(int i=1;i<=m;++i)
    {
        scanf("%d",&Function[i].T);
        if(Function[i].T==1)
        {
            scanf("%d%d",&Function[i].P,&Function[i].V);
        }
        else if(Function[i].T==2)
        {
            scanf("%d",&Function[i].V);
            Function[i].V%=MOD;
        }
        else
        {
            scanf("%d",&Function[i].V);//此处用V代替C
            Function[i].Head=Count+1;
            Function[i].Tail=Count+Function[i].V;
            Count+=Function[i].V;
            for(int j=Function[i].Head;j<=Function[i].Tail;++j)
            {
                scanf("%d",&g[j]);
            }
        }
    }
    scanf("%d",&Q);
    for(int i=1;i<=Q;++i)
    {
        scanf("%d",&f);
        if(Function[f].T==1)
        {
            Add(f);
        }
        else if(Function[f].T==2)
        {
            SuperAdd(f);
        }
        else
        {
            Use(f);
        }
    }
    for(int i=1;i<=n;++i)
    {
        printf("%lld ",a[i]);
    }
    return 0;
}

评测结果: (完 美 T L E)

完 美 T L E

T4 贪吃蛇(snakes)

代码: 我 写 不 出 来 了

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    freopen("snakes.in","r",stdin);
    freopen("snakes.out","w",stdout);
}

评测结果:

OLE

(至于我交了什么会OLE……)

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    //freopen("snakes.in","r",stdin);
    //freopen("snakes.out","w",stdout);
    while(1)puts("Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! ");
}

老儒雅随和了

——————————完——————————