原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round4-D.html

题目传送门 - https://www.nowcoder.com/acm/contest/142/D

题意

  多组数据 $T\leq 200$

  每组数据给定一个 $n$ ,让你构造一个只包含 $-1,1,0$ 的矩阵,使得 每行的和,每列的和 ,共 $2n$ 个数,都互不相同。

  如果没有方案,输出 impossible ;否则输出 possible ,并输出方案。

  $n\leq 200$

题解

  首先放一下官方题解证明 $n$ 为奇数时无解。

  

  然后讲一讲我自己的构造方案。

  令 $A,B,C,D$ 为长宽为 $\cfrac n2$ 的矩阵。令

$$A=\left [\begin{matrix}1&0&0&\cdots&0&0&0\\1&1&0&\cdots&0&0&0\\1&1&1&\cdots&0&0&0\\\vdots&\vdots&\vdots&\ddots&\vdots&\vdots&\vdots\\1&1&1&\cdots&1&0&0\\1&1&1&\cdots&1&1&0\\1&1&1&\cdots&1&1&1\\\end{matrix}\right ]$$

$$B=\left [\begin{matrix}1&1&1&\cdots&1&1&1\\1&1&1&\cdots&1&1&1\\1&1&1&\cdots&1&1&1\\\vdots&\vdots&\vdots&\ddots&\vdots&\vdots&\vdots\\1&1&1&\cdots&1&1&1\\1&1&1&\cdots&1&1&1\\1&1&1&\cdots&1&1&1\\\end{matrix}\right ]$$

$$C=-\left [\begin{matrix}1&1&1&\cdots&1&1&1\\1&1&1&\cdots&1&1&1\\1&1&1&\cdots&1&1&1\\\vdots&\vdots&\vdots&\ddots&\vdots&\vdots&\vdots\\1&1&1&\cdots&1&1&1\\1&1&1&\cdots&1&1&1\\1&1&1&\cdots&1&1&1\\\end{matrix}\right ]$$

$$D=-\left [\begin{matrix}0&1&1&\cdots&1&1&1\\0&0&1&\cdots&1&1&1\\0&0&0&\cdots&1&1&1\\\vdots&\vdots&\vdots&\ddots&\vdots&\vdots&\vdots\\0&0&0&\cdots&0&1&1\\0&0&0&\cdots&0&0&1\\0&0&0&\cdots&0&0&0\\\end{matrix}\right ]$$

  令

$$M=\left (\begin{matrix}A&C\\B&D\\\end{matrix}\right )$$

  矩阵 $M$ 即为答案。

代码

#include <bits/stdc++.h>
using namespace std;
const int N=205;
int T,n;
int a[N][N];
int main(){
scanf("%d",&T);
while (T--){
scanf("%d",&n);
if (n&1){
puts("impossible");
continue;
}
puts("possible");
memset(a,0,sizeof a);
for (int i=1;i<=n/2;i++)
for (int j=1;j<=n/2;j++)
a[i+n/2][j]=1,a[i][j+n/2]=-1;
for (int i=1;i<=n/2;i++)
for (int j=1;j<=i;j++)
a[i][j]=1;
for (int i=1;i<n/2;i++)
for (int j=1;j<=i;j++)
a[n-i][n-j+1]=-1;
for (int i=1;i<=n;i++,puts(""))
for (int j=1;j<=n;j++)
printf("%d ",a[i][j]);
}
return 0;
}

  

2018牛客网暑假ACM多校训练赛(第四场)D Another Distinct Values 构造的更多相关文章

  1. 2018牛客网暑假ACM多校训练赛(第二场)E tree 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round2-E.html 题目传送门 - 2018牛客多校赛第二场 E ...

  2. 2018牛客网暑假ACM多校训练赛(第三场)I Expected Size of Random Convex Hull 计算几何,凸包,其他

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-I.html 题目传送门 - 2018牛客多校赛第三场 I ...

  3. 2018牛客网暑假ACM多校训练赛(第三场)G Coloring Tree 计数,bfs

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-G.html 题目传送门 - 2018牛客多校赛第三场 G ...

  4. 2018牛客网暑假ACM多校训练赛(第三场)D Encrypted String Matching 多项式 FFT

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-D.html 题目传送门 - 2018牛客多校赛第三场 D ...

  5. 2018牛客网暑假ACM多校训练赛(第十场)H Rikka with Ants 类欧几里德算法

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-H.html 题目传送门 - https://www.n ...

  6. 2018牛客网暑假ACM多校训练赛(第十场)F Rikka with Line Graph 最短路 Floyd

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-F.html 题目传送门 - https://www.n ...

  7. 2018牛客网暑假ACM多校训练赛(第十场)D Rikka with Prefix Sum 组合数学

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-D.html 题目传送门 - https://www.n ...

  8. 2018牛客网暑假ACM多校训练赛(第八场)H Playing games 博弈 FWT

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round8-H.html 题目传送门 - https://www.no ...

  9. 2018牛客网暑假ACM多校训练赛(第七场)I Tree Subset Diameter 动态规划 长链剖分 线段树

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round7-I.html 题目传送门 -  https://www.n ...

  10. 2018牛客网暑假ACM多校训练赛(第六场)I Team Rocket 线段树

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round6-I.html 题目传送门 - https://www.no ...

随机推荐

  1. Linux查看所有用户和组信息

    主要通过以下两个命令: cat /etc/passwd cat /etc/group 步骤一:cat /etc/passwd查看所有的用户信息,详情如下图: 步骤2:cat /etc/passwd|g ...

  2. 用sitemap做主页的菜单栏

    首先打开vs--> 新建项-->选择站点地图. 站点地图建好了  其中具体的节点根据自己情况配好就行. 接下来是两个非常重要的类: using System.Collections.Gen ...

  3. elasticsearch中的java.io.IOException: 远程主机强迫关闭了一个现有的连接

    [2018-07-31T14:29:41,289][WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [9rTGh-y] caught exc ...

  4. 连接mysql(建表和删表)

    from sqlalchemy.ext.declarative import declarative_base##拿到父类from sqlalchemy import Column##拿到字段from ...

  5. Golang的单引号、双引号与反引号

    Go语言的字符串类型string在本质上就与其他语言的字符串类型不同: Java的String.C++的std::string以及Python3的str类型都只是定宽字符序列 Go语言的字符串是一个用 ...

  6. liux三剑客grep 正则匹配

    001正则匹配(大部分需要转义) ‘^‘: 锚定行首 '$' : 锚定行尾 [0-9] 一个数字 [^0-9] 除去数字所有,^出现在[]这里表示取反 [a-z] [A-Z] [a-Z] \s 匹配空 ...

  7. IntellJ IDEA下写JUnit

     安装配置JUnit  File->Settings->Plugins->Browse Repositories->在右侧搜索框输入"junit"-> ...

  8. 锤子科技"临死前"被"接盘" ,内部人士爆料已改签今日头条母公司

    就在昨天,据据锤子科技内部人士透露,部分锤子科技员工在昨天已经接到了相关的临时通知,要求改签劳动合同至今日头条的母公司——字节跳动.至于这是锤子科技真正再度复活还是借尸还魂都不重要,重要的是,作为忠实 ...

  9. 数据结构HashMap(Android SparseArray 和ArrayMap)

    HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在.在HashMap中,key-value总是会当做一个整体来处理,系统会根据 ...

  10. js中去除字符串中所有的html标签

    对于获取了一大堆字符串但是又不想要里面的html标签怎么办? 特别是像博客园这个富文本框中,可以带样式的,取出来的文章内容也是带样式的. 但是在某些地方只要显示文本不想显示其他标签,只好这样做. &l ...