题目

构造一个 \(n*n(n\leq 500)\) 的矩阵,满足元素均为正整数,不超过 \(10^15\) 且互不相同,

并且相邻两数若较大的为 \(x\),较小的为 \(y\),那么任意相邻两数 \(x\bmod y\) 都相同。


分析

其实相邻在构造题中有一个很好的办法就是黑白染色,并且让 \(x\bmod y=1\) 能使 \(x\) 尽量小。

综合考虑值域和互不相同,可以发现让白格为四个黑格的最小公倍数加一,那么黑格互不相同就可以让白格也尽量不同。

有一个很妙的方法就是黑格所在的对角线标记一个质数,这样每个黑格被正对角线和反对角线的两个质数相乘,

那么由于至少有一条对角线不同,那么黑格一定互不相同,白格也对应的互不相同,当然 \(n=2\) 的情况要特判。

然后前 \(2n\) 个质数不超过 \(16n\),所以四个数的最小公倍数理论上最大为 \(4*10^{15}\) 实际上肯定达不到这个上界


代码

#include <iostream>
using namespace std;
const int M=8011,N=511,dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int v[M+1],p[M+1],n,m; typedef long long lll; lll a[N][N];
lll gcd(lll x,lll y){return y?gcd(y,x%y):x;}
int main(){
ios::sync_with_stdio(0);
cin>>n,v[1]=1;
if (n==2){
cout<<"2 3\n5 16\n";
return 0;
}
for (int i=2;i<=M;++i)
if (!v[i]){
p[++m]=i;
for (int j=i;j<=M;j+=i) v[j]=1;
}
for (int i=1;i<=n;++i)
for (int j=1;j<=n;++j)
if ((i+j+1)&1)
a[i][j]=p[(i+j)>>1]*p[n+(i-j+n+1)/2];
for (int i=1;i<=n;++i)
for (int j=1;j<=n;++j)
if ((i+j)&1){
a[i][j]=1;
for (int k=0;k<4;++k){
int x=i+dx[k],y=j+dy[k];
if (x<1||y<1||x>n||y>n) continue;
a[i][j]=a[i][j]/gcd(a[i][j],a[x][y])*a[x][y];
}
++a[i][j];
}
for (int i=1;i<=n;++i)
for (int j=1;j<=n;++j)
cout<<a[i][j]<<(char)(j==n?10:32);
return 0;
}

#构造,黑白染色#AT4378 [AGC027D] Modulo Matrix的更多相关文章

  1. agc027D - Modulo Matrix(构造 黑白染色)

    题意 题目链接 构造一个\(n * n\)的矩阵,要求任意相邻的两个数\(a,b\),使得\(max(a,b) \% min(a,b) \not = 0\) Sol 我的思路: 假设\(mod = 1 ...

  2. AGC 027D.Modulo Matrix(构造 黑白染色)

    题目链接 \(Description\) 给定\(n\),要求构造一个\(n\times n\)的矩阵,矩阵内的元素两两不同,且任意相邻的两个元素\(x,y\),满足\(\max(x,y)\ \mat ...

  3. 【AGC018F】Two Trees 构造 黑白染色

    题目描述 有两棵有根树,顶点的编号都是\(1\)~\(n\). 你要给每个点一个权值\(a_i\),使得对于两棵树的所有顶点\(x\),满足\(|x\)的子树的权值和\(|=1\) \(n\leq 1 ...

  4. 「AGC027D」Modulo Matrix

    「AGC027D」Modulo Matrix 传送门 神仙构造题. 首先考虑一个非常自然的思路,我们把棋盘黑白染色后会变成一个二分图,黑色棋子只会与白色棋子相邻. 也就是说,我们可以将二分图的一部随便 ...

  5. AGC027 D - Modulo Matrix 构造

    目录 题目链接 题解 代码 题目链接 AGC027 D - Modulo Matrix 题解 从第左上角第一个点开始染色,相邻不同色,染法唯一 那么一个点的四周与他不同色,我们另这个点比四周都大,那么 ...

  6. AtCoder Grand Contest 027 (AGC017) D - Modulo Matrix 构造

    原文链接https://www.cnblogs.com/zhouzhendong/p/AGC027C.html 题解 首先我们假装 max mod min = 1 然后对着这个构造. 将各自黑白染色, ...

  7. 【BZOJ-1976】能量魔方Cube 最小割 + 黑白染色

    1976: [BeiJing2010组队]能量魔方 Cube Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 884  Solved: 307[Submi ...

  8. BZOJ-2756 奇怪的游戏 黑白染色+最大流+当前弧优化+二分判断+分类讨论

    这个题的数据,太卡了,TLE了两晚上,各种调试优化,各种蛋疼. 2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit ...

  9. POJ 1466 Girls and Boys 黑白染色 + 二分匹配 (最大独立集) 好题

    有n个人, 其中有男生和女生,接着有n行,分别给出了每一个人暗恋的对象(不止暗恋一个) 现在要从这n个人中找出一个最大集合,满足这个集合中的任意2个人,都没有暗恋这种关系. 输出集合的元素个数. 刚开 ...

  10. acdream 1056 (黑白染色)

    题意:给你一些关系,每个关系是两只马的名字,表示这两个马不能在一个分组里,问你能否将这些马分成两组. 黑白染色,相邻的点染不同颜色.bfs搞即可,水题. /* * this code is made ...

随机推荐

  1. win32 - WM_DROPFILES的用法

    WM_DROPFILES: 当用户将文件拖放到已注册为丢弃文件的接收者的应用程序窗口中时发送该消息 我们可以利用这个消息获取文件名称,并将它们保存到容器里. LRESULT CALLBACK Stat ...

  2. 文件IO操作开发笔记(一):使用Qt的QFile对磁盘文件存储进行性能测试以及测试工具

    前言   在做到个别项目对日志要求较高,要求并行写入的数据较多,尽管写入数据的线程放在子线程,仍然会造成界面程序的假死(实际上Qt还是在跑,只是磁盘消耗超过瓶颈,造成假死(注意:控制台还能看到打印输出 ...

  3. 【Docker】.Net Core 结合Nlog集成ELK框架(Elasticsearch , Logstash, Kibana) (五)

    之前有项目有用过ELK做过日志架构,不过是非docker形式安装的,今天来探究一下ELK的容器化技术 Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动 ...

  4. 在写dockerfile时替换国内源

    众所周知,Debian是linux发行版中官方源最难用的一个,这个傻逼源让我再构建docker镜像时卡了很久. ​ 那么能不能替换构建dockerfile时使用的源呢?显然是可以的 ​ 在与Docke ...

  5. 以解析csv数据为例,讨论string、char[]、stream 不同类型来源是否能进行高性能读取解析封装可能性

    篇幅较长,所以首先列举结果,也就是我们的目的 核心目的为探索特定场景对不同类型数据进行统一抽象,并达到足够高性能,也就是一份代码实现,对不同类型数据依然高性能 以下为结果,也就是我们的目的: 对1w行 ...

  6. [C++] 进程注入dll版

    目录 前言 前提 原理 代码 一些问题 前言 这几天在弄进程注入的事情,一直做不出来直接的进程注入,也就是不要dll的注入.因为dll注入据说容易触发杀软,但是弄了两天没弄出来.代码明明不报错,目标进 ...

  7. 003-Java程序流程控制

    3. Java程序流程控制(重点) 程序的三种控制结构 3.1 分支结构 if, switch 3.1.1 if if 分支 根据条件(真或假)来决定执行某段代码. if分支应用场景 if 第一种形式 ...

  8. Jmeter Jsonpath 语法你了解多少?

  9. Redis项目常见解决方案

    ## 1. 缓存预热 在项目启动,或者服务器重启后, 因为请求量较大, 此时对关系型数据库的访问量就有可能超标,导致服务卡顿,宕机, 所以在启动前应该对缓存进行预热: 前置准备工作: 日常例行统计数据 ...

  10. Android---TextView基础属性 + 跑马灯的三种方式

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_wid ...