Bootstrap

hi.表格处理

[语言月赛 202311] 表格处理

题目描述

小 A 有一张 2 × n 2\times n 2×n 行, 2 × m 2\times m 2×m 列的表格。表格上每一行、每一列都有一个正整数。他将对表格先进行一次合并操作,再进行一次转置操作。

对于一个 2 × n 2\times n 2×n 行, 2 × m 2\times m 2×m 列的表格 A A A,进行一次合并操作得到一个 n n n m m m 列的表格 A ′ A' A 的流程为:

  • 将奇数列的每个数加上其右侧相邻的数,之后删除所有的偶数列,给每一列重新编号为第 1 , 2 , 3 , … , m 1,2,3,\dots,m 1,2,3,,m 列;
  • 将奇数行的每个数加上其下侧相邻的数,之后删除所有的偶数行,给每一行重新编号为第 1 , 2 , 3 , … , n 1,2,3,\dots,n 1,2,3,,n 行;

对于一个 n n n m m m 列的表格 A A A,进行一次转置操作得到一个 m m m n n n 列的表格 A T A^T AT 的流程为:

  • 对于所有的 i , j i,j i,j,令 A i , j T = A j , i A^T_{i,j}=A_{j,i} Ai,jT=Aj,i

小 A 想要知道经过这样两次操作后表格会是什么样的。请输出该表格。

本题的输入输出规模较大,特别是对使用 Java/Python 等非传统语言的选手,请使用相对快速的输入输出方式。

输入格式

第一行输入两个正整数 n n n m m m

第二行到第 2 × n + 1 2\times n+1 2×n+1 行,每行输入 2 × m 2\times m 2×m 个正整数,表示表格上每一行每一列的值。

输出格式

输出一个 m m m n n n 列的表格,表示经过两次操作后表格会是什么样的。同一行内的正整数之间用空格隔开。

样例 #1

样例输入 #1

2 2
2 7 1 8
1 8 2 8
3 1 4 1
5 9 2 6

样例输出 #1

18 18
19 13

样例 #2

样例输入 #2

3 3
6 2 3 5 3 2
1 3 1 4 5 2
7 8 7 8 5 6
2 8 3 6 4 8
9 2 1 8 7 5
4 2 4 3 5 1

样例输出 #2

12 25 17
13 24 16
12 23 18

提示说明

在这里插入图片描述

【样例解释】

对于样例一给出的表格,其是经过这些变换得到的:

[ 2 7 1 8 1 8 2 8 3 1 4 1 5 9 2 6 ] 删除列 → [ 9 9 9 10 4 5 14 8 ] 删除行 → [ 18 19 18 13 ] 转置 → [ 18 18 19 13 ] \begin{bmatrix}2 & 7 & 1 & 8 \\ 1 & 8 & 2 & 8 \\ 3 & 1 & 4 & 1 \\ 5 & 9 & 2 & 6 \end{bmatrix} \underrightarrow{删除列} \begin{bmatrix} 9 & 9 \\ 9 & 10 \\4 & 5 \\ 14 & 8 \\\end{bmatrix} \underrightarrow{删除行} \begin{bmatrix} 18 & 19 \\ 18 & 13\end{bmatrix} \underrightarrow{转置} \begin{bmatrix} 18 & 18 \\19 & 13\end{bmatrix} 2135781912428816 删除列 9941491058 删除行[18181913] 转置[18191813]

【数据范围】

对于所有数据,保证: 1 ≤ n , m ≤ 1000 1 \leq n,m \leq 1000 1n,m1000 1 ≤ a i ≤ 1 0 6 1 \leq a_i \leq 10^6 1ai106

代码内容

// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
const ll N=2e3+10;
ll p[N][N];
ll a[N][N];

int main()
{
    ll n,m;
    scanf("%lld%lld",&n,&m);

    for(ll i=1;i<=2*n;i++)
        for(ll j=1;j<=2*m;j++)
            scanf("%lld",&p[i][j]);
    
    for(ll i=1;i<2*n;i+=2) 
        for(ll j=1;j<=2*m;j++) 
            a[i/2+1][j]=p[i][j]+p[i+1][j];
    
    for(ll i=1;i<=n;i++) 
        for(ll j=1;j<2*m;j+=2) 
            p[i][j/2+1]=a[i][j]+a[i][j+1];
    
    for(ll i=1;i<=n;i++) 
        for(ll j=1;j<2*m;j+=2) 
            p[i][j/2+1]=a[i][j]+a[i][j+1];
    
    for(ll i=1;i<=n;i++)
        for(ll j=1;j<=m;j++)
            a[j][i]=p[i][j];

    for(ll i=1;i<=m;i++)
    {
        for(ll j=1;j<=n;j++)
            printf("%lld ",a[i][j]);
        puts("");
    }
    
    return 0;
}

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;