• Grid Coloring


    这是牛客多校第六场的G题,也是我第一篇关于牛客多校的博客。

    这道题题目意思是给你一个n*n的细胞块,让我们通过给每一块的边缘绘色,让他满足以下三个条件:

    (1)满足每种颜色的颜色数量相同;

    (2)满足每一块不能全部用一个色绘边;

    (3)满足同一行或者同一列要2种颜色以上;

    题目给我们t组测试样例,然后给我们n和k种颜色。

    大致分析一下可以得出以下结论:

    (1)边的数量要是k的整数倍;

    (2)n和k不能为1。

    然后我们开始构造:

    我们只需要保证同行 / 列没有两条相邻的边,且相邻两行 / 列同一列 / 行的边颜色不相同。

    这是很好构造的,对于 ,直接按  顺序依次分配边权;对于 ,在偶数行 / 列上循环移 1 位即可。

    然后附上AC代码:

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    #include<vector>
    #define ll long long
    using namespace std;
    
    long long  pow_mod(long long  a, long long k,long long mod)
    {
        long long  ans = 1;
        a %= mod;
        while (k)
        {
            if (k % 2) ans *= a;
            a = (a * a) % mod;
            k /= 2;
            ans %= mod;
        }
        return ans;
    }
    
    
    int main()
    {
        int t;
        cin >> t;
        while (t--)
        {
            int n, k;
            cin >> n>>k;
            if ((2 *n* (n + 1)) % k != 0||n==1||k==1)
            {
                cout << "-1" << endl;
            }
            else
            {
                if (n % k == 0)
                {
                    int lazy = 0;
                    for (int i = 1; i <= 2 * (n + 1); i++)
                    {
                        int flag = lazy;
                        for (int j = 1; j <= n; j++)
                        {
                            flag = flag % k + 1;
                            printf("%d", flag);
                            if (j == n)printf("
    ");
                            else printf(" ");
                        }
                        lazy ^= 1;
                    }
                }
                else
                {
                    int lazy = 0;
                    for (int i = 1; i <= 2 * (n + 1); i++)
                    {
                        for (int j = 1; j <= n; j++)
                        {
                            lazy = lazy % k + 1;
                            printf("%d", lazy);
                            if (j == n)printf("
    ");
                            else printf(" ");
                        }
                    }
                }
            }
        }
    }
  • 相关阅读:
    yum、RPM常用的命令(转)
    10个你可能从未用过的PHP函数(转)
    sphinx 增量索引 及时更新、sphinx indexer索引合成时去旧和过滤办法(转)
    MySQL查询in操作 查询结果按in集合顺序显示(转)
    sphinx配置文件继承
    开源搜索引擎Sphinx 中启动多个搜索进程的方法(转)
    sphinx的简单实例
    Python中的join()函数的用法
    django queryset values&values_list
    Django中的QuerySet查询优化之select_related
  • 原文地址:https://www.cnblogs.com/csxaxx/p/13390954.html
Copyright © 2020-2023  润新知