2020牛客多校第六场By Rynar

A.African Sort

B.Binary Vector

const int mod=1e9+7;
const int N=2e7+10;
typedef long long ll;
int a[N],b[N];
int qpow(ll x,int y){
    ll ans=1;
    while (y){
        if (y&1)ans=ans*x%mod;
        x=x*x%mod;
        y>>=1;
    }
    return ans;
}
int main(){
    int T;
    cin>>T;
    ll q=2,p=qpow(2,mod-2),t=1;
    a[0]=1;b[0]=0;
    for (int i=1;i<N;i++){
        t=t*p%mod;
        a[i]=(q-1)*a[i-1]%mod*t%mod;
        q=1ll*q*2%mod;
        b[i]=b[i-1]^a[i];
    }
    int x;
    while (T--){
        scanf("%d",&x);
        printf("%d\n",b[x]);
    }
    return 0;
}

C.Combination of Physics and Maths

const int N=200+10;
int a[N][N];
int main(){
    int T,n,m;
    scanf("%d",&T);
    while (T--){
        scanf("%d%d",&n,&m);
        for (int i=1;i<=n;i++){
            for (int j=1;j<=m;j++){
                scanf("%d",&a[i][j]);
            }
        }
        double mx=0,p=0;
        for (int i=1;i<=m;i++){
            p=0;
            for (int j=1;j<=n;j++){
                p+=a[j][i];
                mx=max(mx,double(p)/a[j][i]);
            }
        }
        printf("%.8lf\n",mx);
    }
    return 0;
}

D.Data structure

E.Easy Construction

思路:n*(n-1)/2,当n%21时,n*(n-1)/2%n=0,只需n,...,2,n-2,1,n-1后面部分都是两位和为n
当n%2
0时,n*(n-1)/2%n=n/2,只需把n/2放在第二位,后面部分都是两位和为n

const int N=5000+10;
int a[N];
int main(){
    int n,k;
    scanf("%d%d",&n,&k);
    if (n*(n-1)/2%n!=k){
        puts("-1");return 0;
    }
    a[1]=n;
    int cnt=n-1,r=n;
    while (r>2){
        a[r]=cnt;
        a[r-1]=n-cnt;
        r-=2;
        cnt--;
    }
    if (n%2==0)a[2]=n/2;
    for (int i=1;i<=n;i++){
        printf("%d ",a[i]);
    }
    puts("");
    return 0;
}

F.Fibonacci Partition

G.Grid Coloring

int main(){
    int T;
    int n,k;
    scanf("%d",&T);
    while (T--){
        scanf("%d%d",&n,&k);
        if (2*n*(n+1)%k||k==1||n==1){
            puts("-1");continue;
        }
        if(n%k){
            int p=1;
            for (int i=1;i<=n+1;i++){
                for (int j=1;j<=n;j++){
                    printf("%d ",p);
                    p=p%k+1;
                }
                puts("");
            }
            for (int i=1;i<=n+1;i++){
                for (int j=1;j<=n;j++){
                    printf("%d ",p);
                    p=p%k+1;
                }
                puts("");
            }
        }
        else{
            for (int i=1;i<=n+1;i++){
                for (int j=1;j<=n;j++){
                    printf("%d ",(i+j-2)%k+1);
                }
                puts("");
            }
            for (int i=1;i<=n+1;i++){
                for (int j=1;j<=n;j++){
                    printf("%d ",(i+j-1)%k+1);
                }
                puts("");
            }
        }
    }
    return 0;
}

H.Harmony Pairs

const int mod=1e9+7;
char s[102];
int dp[102][1801][2][2];
ll dfs(int n,int sum,int t,bool lim){
    if (!n)return sum>900;
    if (~dp[n][sum][t][lim])return dp[n][sum][t][lim];
    int up=lim?s[n]-'0':9;
    ll ans=0;
    for (int i=0;i<=up;i++){//B
        for (int j=0;j<=9;j++){//A
            if (t&&j>i)continue;
            (ans+=dfs(n-1,sum+j-i,t&&(i==j),lim&&(i==up)))%=mod;
        }
    }
    return dp[n][sum][t][lim]=ans;
}
int main(){
    memset(dp,-1,sizeof dp);
    scanf("%s",s+1);
    int len=strlen(s+1);
    reverse(s+1,s+1+len);
    printf("%d\n",dfs(len,900,1,1));
    return 0;
}

I.Interesting Stiriling

J.Josephus Transform

K.K-Bag

posted @ 2020-07-27 18:37  Rynar  阅读(347)  评论(0)    收藏  举报