• [考试反思]1110csp-s模拟测试108:消遣


    是套废题。T1题面错了,T2细节多而暴力>部分分,T3题目错了。

    T1:打表

    题面应该是输出差值期望而不是答案值期望。

    看到题目,果断打表。

    答案就是所有值差之和除2的k次方。

     1 #include<cstdio>
     2 int k,a[333333];long long ans;
     3 int main(){
     4     freopen("table.in","r",stdin);freopen("table.out","w",stdout);
     5     scanf("%d%lld",&k,&ans);
     6     for(int i=0;i<1<<k;++i)scanf("%d",&a[i]);
     7     ans=a[ans];
     8     for(int i=0;i<1<<k;++i)a[i]-=ans;
     9     for(int i=0;i<1<<k;++i)if(a[i]<0)a[i]*=-1;ans=0;
    10     for(int i=0;i<1<<k;++i)ans+=a[i];ans%=1000000007;
    11     for(int i=1;i<=k;++i)ans=ans*500000004%1000000007;
    12     printf("%lld
    ",ans);
    13 }
    View Code

    T2:蛇

    蛇的路径一定是先走一个左括号形,再曲折右走,再走一个右括号。

    Hash。处理左括号右括号。

    dp。处理曲折前行。

    左括号的预处理答案作为dp数组的初值。

    细节很多,注意单独一个左括号/右括号的情况。

    注意长度为1的括号不算括号,但是长度为0的算。

    调4个小时就能AC了。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ul unsigned long long
     4 const int mod=1e9+7;
     5 int ans,n,l,dp[2][2005][2005],DP[2][2005][2005],ok=1;
     6 char s[2][2005],S[2005];ul hsh[2][2005],ihsh[2][2005],shsh[2005],pw[2005];
     7 ul Hsh(int opt,int l,int r){return hsh[opt][r]-hsh[opt][l-1]*pw[r-l+1];}
     8 ul Ihsh(int opt,int r,int l){return ihsh[opt][l]-ihsh[opt][r+1]*pw[r-l+1];}
     9 ul Shsh(int l,int r){return shsh[r]-shsh[l-1]*pw[r-l+1];}
    10 int main(){
    11     freopen("snake.in","r",stdin);freopen("snake.out","w",stdout);
    12     scanf("%s%s%s",s[0]+1,s[1]+1,S+1);
    13     while(s[0][n+1])n++;while(S[l+1])l++;bg:
    14     if(l==1){for(int i=0;i<2;++i)for(int j=1;j<=n;++j)if(s[i][j]==S[1])ans++;cout<<ans<<endl;return 0;}
    15     if(l==2){
    16         for(int i=0;i<2;++i)for(int j=1;j<n;++j)if(s[i][j]==S[1]&&s[i][j+1]==S[2])ans++;
    17         for(int j=1;j<=n;++j)if(s[0][j]==S[1]&&s[1][j]==S[2])ans++;
    18         for(int i=0;i<2;++i)for(int j=2;j<=n;++j)if(s[i][j]==S[1]&&s[i][j-1]==S[2])ans++;
    19         for(int j=1;j<=n;++j)if(s[1][j]==S[1]&&s[0][j]==S[2])ans++;
    20         cout<<ans<<endl;return 0;
    21     }
    22     for(int i=0;i<2;++i)for(int j=1;j<=n;++j)hsh[i][j]=hsh[i][j-1]*29+s[i][j]-'a';
    23     for(int i=0;i<2;++i)for(int j=n;j;--j)ihsh[i][j]=ihsh[i][j+1]*29+s[i][j]-'a';
    24     pw[0]=1;for(int i=1;i<=n;++i)pw[i]=pw[i-1]*29;
    25     for(int i=1;i<=l;++i)shsh[i]=shsh[i-1]*29+S[i]-'a';
    26     for(int i=0;i<=n;++i)for(int j=0;j<=i&&j<<1<=l;++j)for(int k=0;k<2;++k)
    27         if(Hsh(k,i-j+1,i)==Shsh(j+1,j<<1)&&Ihsh(k^1,i,i-j+1)==Shsh(1,j))
    28             dp[k][i+1][j<<1|1]+=s[k][i+1]==S[j<<1|1],ans+=(j<<1==l)*ok;
    29     for(int i=1;i<=n+1;++i)for(int j=0;j<<1<=l&&i+j-1<=n;++j)for(int k=0;k<2;++k)
    30         if(Hsh(k,i,i+j-1)==Shsh(l-j-j+1,l-j)&&Ihsh(k^1,i+j-1,i)==Shsh(l-j+1,l))
    31             DP[k][i][l-j-j+1]+=(s[k][i]==S[l-j-j+1]||j==0),ans+=((j<<1)==l)*ok;
    32     for(int k=0;k<2;++k)for(int i=0;i<=n+1;++i)dp[k][i][3]=DP[k][i][l-1]=0;
    33     for(int i=2;i<n;++i)for(int j=3;j<l;++j)for(int k=0;k<2;++k)ans+=dp[k][i][j]*DP[k][i][j];
    34     for(int k=0;k<2;++k)for(int i=1;i<=n;++i)if(s[k][i]==S[1])dp[k][i][1]=1;
    35     for(int i=0;i<=n;++i){
    36         for(int j=l;j>1;--j)for(int k=0;k<2;++k)if(i&&s[k][i]==S[j])dp[k][i][j]=(dp[k][i][j]+dp[k][i-1][j-1])%mod;
    37         for(int j=l;j>1;--j)for(int k=0;k<2;++k)if(i&&s[k][i]==S[j])dp[k][i][j]=(dp[k][i][j]+dp[k^1][i][j-1])%mod;
    38         for(int j=l;~j;--j)for(int k=0;k<2;++k)ans=(ans+1ll*dp[k][i][j]*DP[k][i+1][j+1])%mod;
    39     }
    40 //    for(int k=0;k<=1+l;++k,puts(""))for(int i=0;i<2;++i,puts(""))for(int j=1;j<=n+1;++j)printf("%d/%d ",dp[i][j][k],DP[i][j][k]);
    41     if(ok){reverse(S+1,S+l+1);memset(dp,0,sizeof dp);memset(DP,0,sizeof DP);ok=0;goto bg;}
    42     cout<<ans<<endl;
    43 }
    View Code

    T3:题目

    废题。

  • 相关阅读:
    正交矩阵(部分转载)
    向量的点乘和叉乘
    随机森林
    PCA和LDA
    SIFT和SURF特征(草稿)
    12-赵志勇机器学习-Label_Propagation
    11-赵志勇机器学习-DBSCAN聚类
    09-赵志勇机器学习-k-means
    10-赵志勇机器学习-meanshift
    09-numpy-笔记-repeat
  • 原文地址:https://www.cnblogs.com/hzoi-DeepinC/p/11832860.html
Copyright © 2020-2023  润新知