zoukankan      html  css  js  c++  java
  • HDU

    http://acm.hdu.edu.cn/showproblem.php?pid=6313

    题意

    让你构造一个矩阵使得里面不存在四个顶点都为1的矩形,并且矩阵里面1的个数要>=85000

    分析

    来自https://blog.csdn.net/qq_37025443/article/details/81221008

    先从25*25的构造看起

    10000 01000 00100 00010 00001
    10000 00100 00001 01000 00010
    10000 00010 01000 00001 00100
    10000 00001 00010 00100 01000
    10000 10000 10000 10000 10000
    01000 00100 00010 00001 10000
    01000 00010 10000 00100 00001
    01000 00001 00100 10000 00010
    01000 10000 00001 00010 00100
    01000 01000 01000 01000 01000

    ........

    根据上面可以得出规律:

    假设行数为x(x=1...25),列数y(y=1....25)

    单论一行来说,总共只有5个1,可以分成5组,每组一个1,每一组的1的位置=((前一组1的位置k+x%p)-1)%p+1

    那么我们只要知道每一行第一个位置在哪里就可以构造出来了。

    这样第i行第一个1的位置其实就是(x-1/p)

    那么这样我们就可以构造出来一个满足上述条件的矩阵了。

    但是这个25*25的矩阵只能满足n<=25的情况,一旦n>=25

    那么就有可能出现重复的矩阵(以这个25*25为单元重复),两个重复的矩阵找对应的4个位置就可以构成一个矩形了

    所以我们需要重新找一个质数p,使得p*p>=2000,那么可以很容易得到p=47

    #include <cstdio>
    #include <cstring>
     
    const int MAXN = 2001;
    int mp[MAXN][MAXN];
     
    int main()
    {
        int n;
        int p=47;
        n=2000;
        for(int i=0;i<(n/(p*p)+(n%(p*p)?1:0));i++)
            for(int j=0;j<(n/(p*p)+(n%(p*p)?1:0));j++)
                for(int x=1;x<=(p*p)&&(i*(p*p)+x)<=n;x++)
                    //for(int y=1;y<=p*p&&(j*(p*p)+y+(((y/p)*x)%p))<=n;y+=p)
                    for(int y=0;y<p&&(j*(p*p)+y*p+((((x-1)/p+1+(((x-1)%p+1)*y%p))-1)%p+1))<=n;y+=1)
                    {
                        mp[i*(p*p)+x][j*(p*p)+y*p+((((x-1)/p+1+(((x-1)%p+1)*y%p))-1)%p+1)]=1;
                    }
        printf("%d
    ",n);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                /*if(j%p==0) printf("%d ",mp[i][j]);
                else */printf("%d",mp[i][j]);
            }
            printf("
    ");
        }
        return 0;
     
    }
  • 相关阅读:
    图片懒加载
    文字表情转换成小图标
    页面跳页面的参数获取
    vue v-for里面再套v-if和v-esle
    滚动条样式的修改
    vue-cil生产环境和发布环境的配置
    css隐藏滚动条并且可以滑动
    vue-cli脚手架一些插件安装elementui和axios
    闭包
    定时器、运动、日历
  • 原文地址:https://www.cnblogs.com/fht-litost/p/9551742.html
Copyright © 2011-2022 走看看