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

posted @ 2019-08-23 15:23  Frost_Delay  阅读(146)  评论(2编辑  收藏  举报