zoukankan      html  css  js  c++  java
  • day23

    最后一天做题了吧,也没留下什么遗憾。

    T1模拟了一波,听起来和正解好像差不多,但是又WA又TLE我佛了;

    T2考场AC了,找一下规律就可以发现是杨辉三角,写个高精就能过,好像还能用组合数做?我不知道;

    顺带一提,那个$x^x$最好用快速幂,不然可能很慢

    T3由于我不擅长图论,考场看到就弃了,打第二题了正解是最短路+DP吧。。。

    T4数据结构题,暴力了20分

    总得分30+100+0+20=150;

    还挺好的,rank又回到了前40

    T1

    我%%%%%%,

    考场傻逼了,敲的正解却把往前算的个数算错了。

    往前$2^i$我变成了$2*i$;

    还tm找了那么久错;

    我快自闭了。

    #include<iostream>
    #include<cstdio>
    #include<cctype>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    inline double read()
    {
        int x=0,f=1;char c=getchar();
        while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
        while(isdigit(c)){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
        return double(x*f);
    }
    inline int poww(int x,int i)
    {
        int ans=1;
        while(i)
        {
            if(i&1)ans*=x;
            i>>=1;
            x*=x;
        }
        return ans;
    }
    double f[2000][2000];
    double p[2000];
    double a[2000];
    int n;
    inline void updata(int x,int i,int sb)
    {
        if(!sb)sb=i;
        for(int j=1;j<=i;j++)
        {
            p[x]+=a[x]*a[i+j+x-sb]*f[x][i+j+x-sb];
            p[i+j+x-sb]+=a[i+j+x-sb]*a[x]*f[i+j+x-sb][x];
        }
        return;
    }
    int main()
    {
        n=read();int sbbb=poww(2,n);
        for(int i=1;i<=sbbb;i++)for(int j=1;j<=sbbb;j++)f[i][j]=read()/100;
        for(int i=1;i<=sbbb;i++)if(i&1)a[i]=f[i][i+1];else a[i]=f[i][i-1];
        for(int i=1;i<n;i++)
        {
            for(int j=1;j<=sbbb;j++)
            {
                int z=poww(2,i);
                updata(j,z,j%z);
                if(!(j%z))j+=z;
            }
            memcpy(a,p,sizeof(p));
            memset(p,0,sizeof(p));
        }
        int manx;
        double maxx=-1;
        for(int i=1;i<=sbbb;i++)
        if(a[i]>maxx)
        {
            maxx=a[i];manx=i;
        }
        cout<<manx<<endl;
        return 0;
    }
    View Code

    T2

    压位高精

    #include<iostream>
    #include<cstdio>
    #include<cctype>
    using namespace std;
    inline long long read()
    {
        long long x=0,f=1;char c=getchar();
        while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
        while(isdigit(c)){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
        return x*f;
    }
    long long xx,k;
    inline long long poww(long long x,long long i)
    {
        long long ans=1;
        while(i)
        {
            if(i&1)ans=(ans*x)%1000;
            i>>=1;
            x=(x*x)%1000;
        }
        return ans%1000;
    }
    long long f[1010][1010];
    inline void jia(int x,int y)
    {
        for(int i=1;i<=max(f[x][0],f[y][0]);i++)
        f[x][i]+=f[y][i];
        for(int i=1;i<=max(f[x][0],f[y][0]);i++)
        {
            if(f[x][i]>=100000000)
            {
                long long temp=f[x][i]/100000000;
                f[x][i]%=100000000;
                f[x][i+1]+=temp;
            }
        }
        if(f[x][f[x][0]+1])f[x][0]++;
    }
    int main()
    {
        k=read();xx=read();
        xx=poww(xx%1000,xx);
        for(int i=1;i<=xx-k+1;i++)f[i][0]=f[i][1]=1;
        for(int i=1;i<k;i++)
        {
            for(int j=1;j<=xx-k+1;j++)
            jia(j,j-1);
        }
        int l=xx+1-k;
        printf("%lld",f[l][f[l][0]]);
        for(int i=f[l][0]-1;i>=1;i--)
        {
            printf("%lld",f[l][i]/10000000);
            printf("%lld",f[l][i]/1000000%10);
            printf("%lld",f[l][i]/100000%10);
            printf("%lld",f[l][i]/10000%10);
            printf("%lld",f[l][i]/1000%10);
            printf("%lld",f[l][i]/100%10);
            printf("%lld",f[l][i]/10%10);
            printf("%lld",f[l][i]%10);
        }
        return 0;
    }
    View Code

    T3

    T4

  • 相关阅读:
    机房收费系统重构(三)—工厂+反射+DAL
    机房收费系统重构(二)—菜鸟入门
    机房收费系统重构(—)—小试牛刀
    vb.net机房收费登录功能
    设计模式总结之结构型模式
    设计模式总结之创建型模式
    大话设计之桥接模式
    大话设计之单例模式
    大话设计之适配器模式
    大话设计之抽象工厂模式
  • 原文地址:https://www.cnblogs.com/Frost-Delay/p/day23.html
Copyright © 2011-2022 走看看