Codeforces Round 941 (Div. 1) E. Connected Cubes(构造)

题目

思路来源

官方题解

题解

可以看下官方题解的7张图,还是比较清晰的,这里直接粘贴一下

来源:Codeforces Round #941 (Div. 1, Div. 2) Editorial - Codeforces

(1)原来的图

(2)对于偶数行,z轴正向伸长,长度为n+k

(3)对于奇数行,先通过L形状,使方向从z轴正向转换为x轴正向

(4)奇数行,x轴正向伸长为n+k

(4)奇数行,x轴正向伸长为n+k

(5)对于奇数行,z轴正向多出来的这k层,每一层填充k种颜色中的一种,

这样可以使得原来偶数行的原图里的颜色,和本次新增的奇数行的部分连通,

但是,新增部分的奇数行内部还没有连通

(6)对于偶数行,x轴正向多出来的这k层,每一层填充k种颜色中的一种,

这样可以使得原来奇数行的原图里的颜色,和本次新增的偶数行的部分连通,

但是,新增部分的偶数行内部还没有连通

(7)沿z轴正向,k种颜色每种颜色分配一个平行y轴的长条,

使得(5)中「新增部分的奇数行」彼此之间连通

(8)沿x轴正向,k种颜色每种颜色分配一个平行y轴的长条,

使得(6)中「新增部分的偶数行」彼此之间连通

(9)新增L型条,使每种颜色(7)(8)两部分连通,至此所有颜色已完全连通

代码

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) cout<<(a);
#define pte(a) cout<<(a)<<endl;
#define ptlle(a) cout<<(a)<<endl;   
#define debug(...) fprintf(stderr, __VA_ARGS__)
const int N=55;
typedef array<int,4> A;
int n,m,k,a[N][N];
vector<A>ans;
int main(){
    sci(n),sci(m),sci(k);
    rep(i,1,n){
        rep(j,1,m){
            sci(a[i][j]);
        }
    }
    rep(i,1,n){
        rep(j,1,m){
            if(j%2==0){
                rep(x,2,n+k){
                    ans.pb({i,j,x,a[i][j]});//1.偶行竖条
                }   
            }
            else{
                //(1,j,1)-(1,j,2) xOz平面
                rep(x,2,n+1-i){
                    ans.pb({i,j,x,a[i][j]});//2.奇行竖条
                }
                rep(x,i+1,n+k){
                    ans.pb({x,j,n+1-i,a[i][j]});//3.奇行横条
                }
            }
        }
    }
    rep(c,1,k){
        rep(j,1,m){
            if(j&1){
                rep(i,1,n){
                    ans.pb({i,j,n+c,c});//4.xOy平面奇行平铺一层
                }
            }
            else{
                rep(i,1,n){
                    ans.pb({n+c,j,i,c});//5.yOz平面偶行平铺一层
                } 
            }
        }
    }
    rep(c,1,k){
        rep(j,1,m){
            ans.pb({n+1,j,n+c,c});//6.每个颜色y轴铺一条 沿z轴正向堆叠
        }
    }
    rep(c,2,k){
        rep(j,1,m){
            ans.pb({n+c,j,n+1,c});//7.每个颜色y轴铺一条 沿x轴正向堆叠
        }
        //8.使6、7两种竖条联通
        rep(i,2,c){
            ans.pb({n+i,1,n+c,c});
        }
        rep(i,2,c-1){
            ans.pb({n+c,1,n+i,c});
        }
    }
    pte(SZ(ans));
    for(auto &x:ans){
        printf("%d %d %d %d\n",x[0],x[1],x[2],x[3]);
    }
    return 0;
}

相关推荐

  1. Codeforces Round 941 (Div. 2) ABC

    2024-04-28 07:20:06       14 阅读
  2. Codeforces Round 944 (Div. 4)

    2024-04-28 07:20:06       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-28 07:20:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-28 07:20:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-28 07:20:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-28 07:20:06       20 阅读

热门阅读

  1. test-demo-record

    2024-04-28 07:20:06       17 阅读
  2. partition global index 大全 UPDATE GLOBAL INDEXES

    2024-04-28 07:20:06       17 阅读
  3. 介绍 TensorFlow 的基本概念和使用场景

    2024-04-28 07:20:06       41 阅读
  4. 五个衰落的编程语言

    2024-04-28 07:20:06       13 阅读
  5. Python基础12-爬虫抓取网页内容

    2024-04-28 07:20:06       17 阅读
  6. Python爬虫-车主之家详情页汽车数据

    2024-04-28 07:20:06       12 阅读
  7. (python)动态规划

    2024-04-28 07:20:06       35 阅读
  8. springBoot加载配置文件

    2024-04-28 07:20:06       32 阅读
  9. websocket集成文档

    2024-04-28 07:20:06       13 阅读
  10. 部署接入 M3E和chatglm2-m3e文本向量模型

    2024-04-28 07:20:06       14 阅读
  11. Docker容器配置进阶

    2024-04-28 07:20:06       43 阅读