• Codeforces Round #663 (Div. 2)


    AB

    太水了

    C

    打表发现答案是n!-2n-1,但是不能就这样草草了事,理性分析:考虑不成环的方案(因为看起来远少于成环的),加入一个新元素的时候,如果原图成环,则怎么放都成环,如果不成环,放在开头和结尾则不成环,故方案数每次*2

    D

    当n>=4时不符合条件输出-1,对于每个2*2的矩阵都满足条件,则拼在一起的4*4的矩阵势必不满足条件,因为四个奇数的和必为偶数

    当n=1时,答案为0

    当n=2/3时,直接状压DP即可,复杂度O(4^n*m)

    #include<bits/stdc++.h>
    using namespace std;
    const int N=5e5+7;
    int n,m,ans,f[N][8],c[8][8];
    char a[3][N];
    int main()
    {
        scanf("%d%d",&n,&m);
        if(n==1||m==1){puts("0");return 0;}
        if(n>=4){puts("-1");return 0;}
        for(int i=0;i<n;i++)scanf("%s",a[i]+1);
        for(int i=0;i<(1<<n);i++)
        {
            for(int j=0;j<(1<<n);j++)
            {
                int a1=(i&1),a2=(bool)(i&2),a3=(bool)(i&4),b1=(j&1),b2=(bool)(j&2),b3=(bool)(j&4);
                if((a1+a2+b1+b2)%2&&(n==2||(a2+a3+b2+b3)%2))c[i][j]=1;
            }
            for(int j=0;j<n;j++)if(a[j][1]!='0'+((i>>j)&1))f[1][i]++;
        }
        for(int i=2;i<=m;i++)
        for(int j=0;j<(1<<n);j++)
        {
            f[i][j]=n*m+1;
            for(int k=0;k<(1<<n);k++)if(c[k][j])f[i][j]=min(f[i][j],f[i-1][k]);
            for(int k=0;k<n;k++)if(a[k][i]!='0'+((j>>k)&1))f[i][j]++;
        }
        ans=n*m+1;
        for(int i=0;i<(1<<n);i++)ans=min(ans,f[m][i]);
        if(ans==n*m+1)puts("-1");else printf("%d",ans);
    }
    View Code

    E

    题都看不懂还写啥

    真实手速场,因为D数组开小RE了一发,只有rk66,新号rating+=199,卡线上橙了!

  • 相关阅读:
    console报错:No mapping found for HTTP request with URI(xxx)
    jquery,ajax详解
    spring-mvc.xml 和 application-context.xml的区别
    robot
    Linux记录history命令
    防火墙知识小结
    wireshark语法小结
    https和证书小结
    生成自签名证书:生成证书和秘钥
    查看win信任的证书办法机构(CA机构的公钥)
  • 原文地址:https://www.cnblogs.com/hfctf0210/p/13469090.html
Copyright © 2020-2023  润新知