zoukankan      html  css  js  c++  java
  • C

    本篇 blog 没有翻译,告辞


    考虑从简单的开始。当 (n = k) 时,一个排列复制 (n) 遍。

    然而 (n)(frac{k}{2}) 级别的,那么就扩展一下,当 (4 | k) 时,我们弄个 (n = frac{k}{2}) 的矩阵,排列填到前两行,复制 (frac{n}{2}) 遍。

    然而当我们 (k) 为奇数的时候怎么办?

    (k + 1) 的时候貌似有点麻烦。考虑 (k - 1)

    考虑把最大的换掉。显然换成特殊的比较好,那么就它上面那个了。然而如果要满足换成的那个颜色的限制,发现可以循环位移,第 (i) 行移 (i) 格。其实这样还可以一直构造到 (k = n)

    乱糊的一篇低质量文。

    #include <bits/stdc++.h>
    
    const int MAXN = 1010;
    int A[2][MAXN];
    int K, n;
    void shift(int * A) {
    	memmove(A, A + 1, n << 2);
    	A[n] = A[0];
    }
    int main() {
    	std::ios_base::sync_with_stdio(false), std::cin.tie(0);
    	std::cin >> K; n = (K + 3 >> 2) << 1;
    	if (K == 1) return std::cout << "1
    1
    ", 0;
    	auto red = [] (int x) { return x > K ? x - n : x; };
    	int idx = 0;
    	for (int k = 0; k < 2; ++k)
    		for (int j = 1; j <= n; ++j)
    			A[k][j] = ++idx;
    	shift(A[1]);
    	std::cout << n << '
    ';
    	for (int i = 1; i <= n / 2; ++i) {
    		for (int k = 0; k < 2; ++k)
    			for (int j = 1; j <= n; ++j)
    				std::cout << red(A[k][j]) << (" 
    " [j == n]);
    		shift(A[0]); shift(A[0]);
    		shift(A[1]); shift(A[1]);
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    Serverless Kubernetes入门:对kubernetes做减法
    Quick BI的宝藏工具——交叉表
    Quick BI的SQL传参建模可以用在什么场景
    Quick BI支持哪些数据源(配置操作篇)
    注册 asp.net IIS
    js Date 生成某年某月的天数
    IOC AOP 设计模式
    stuff for xml path
    使用Sencha Cmd创建脚本框架
    Extjs Ext.TreePanel
  • 原文地址:https://www.cnblogs.com/daklqw/p/12099009.html
Copyright © 2011-2022 走看看