题目链接


\(Description\)

给定\(n\),要求构造一个\(n\times n\)的矩阵,矩阵内的元素两两不同,且任意相邻的两个元素\(x,y\),满足\(\max(x,y)\ \mathbb{mod}\ \min(x,y)\)等于一个非零常数。

\(n\leq500,\ 1\leq 矩阵中的元素\leq10^{15}\)。

\(Solution\)

https://blog.csdn.net/Tiw_Air_Op1721/article/details/82719507 orz!

考虑没有元素互不相同的限制,那么就直接填\(x,x+1,x,x+1...\),即对矩阵黑白染色,黑格子填\(x\),白格子填\(x+1\)。

如果有限制,依旧可以先黑白染色,然后令白格子比周围四个黑格子都大。就令\(\max(x,y)\ \mathbb{mod}\ \min(x,y)=1\)好了,这样白格子的权值等于周围四个黑格子的\(LCM+1\)。

但是这样直接随便给黑格子赋权值,元素是会超过\(10^{15}\)的。

因为是求\(LCM\),不妨令黑格子根据对角线设成两个数的乘积。即,对于左上-右下和左下-右上这\(2n\)条对角线(只考虑黑格子),分别给它一个数。那一个黑格子的它所在的两条对角线上的数的乘积。

要保证任意元素互不相同,所以考虑把这\(2n\)个数设成\(2n\)个质数。

那么对于最大的白格子,权值是\(第499个质数\times第500个质数\times第999个质数\times第1000个质数<8\times10^{14}\)。那么就OK啦。

\(n=2\)时不对,要特判。


//54ms	4992KB
#include <cstdio>
#include <algorithm>
typedef long long LL;
const int N=505,M=8100; int P[1005];
LL A[N][N]; void Init()
{
static bool notP[M];
for(int cnt=0,i=2; cnt<1000; ++i)
{
if(!notP[i]) P[++cnt]=i;
for(int j=1,v; j<=cnt&&(v=i*P[j])<M; ++j)
{
notP[v]=1;
if(!(i%P[j])) break;
}
}
}
inline LL LCM(LL x,LL y)//longlong
{
return x/std::__gcd(x,y)*y;
} int main()
{
Init();
int n; scanf("%d",&n);
if(n==2) return printf("4 7\n23 10\n"),0;
for(int i=0; i<=n+1; ++i) A[0][i]=1, A[n+1][i]=1, A[i][n+1]=A[i][0]=1;
for(int i=1; i<=n; ++i)
for(int j=i&1?1:2; j<=n; j+=2)
/*if(!(i+j&1))*/ A[i][j]=P[i+j>>1]*P[(i-j+n+1)/2+n];
for(int i=1; i<=n; ++i)
for(int j=i&1?2:1; j<=n; j+=2)
/*if(i+j&1)*/ A[i][j]=LCM(LCM(A[i-1][j],A[i][j-1]),LCM(A[i+1][j],A[i][j+1]))+1;
for(int i=1; i<=n; ++i,putchar('\n'))
for(int j=1; j<=n; ++j) printf("%lld ",A[i][j]); return 0;
}

AGC 027D.Modulo Matrix(构造 黑白染色)的更多相关文章

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

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

  2. AGC027 D - Modulo Matrix 构造

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

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

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

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

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

  5. 「AGC027D」Modulo Matrix

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

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

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

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

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

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

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

  9. acdream 1056 (黑白染色)

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

随机推荐

  1. java常用实用类

    1.String类概念 java程序中默认导入java.lang包的,像java.lang.String等String类属于final类,用户不能扩展String类,String 类没有子类.Stri ...

  2. Centos7上vsftp脚本--> sh vsftp.sh 用户名 密码 --> sh vsftp.sh install

    #!/bin/bash #vsftp install . /etc/rc.d/init.d/functions users=/etc/vsftpd/vftpuser.txt login=/etc/vs ...

  3. Java 9 中的 9 个新特性你知道吗

    摘要: Java 8 发布三年多之后,即将快到2017年7月下一个版本发布的日期了. 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它的更新. 这里有九个令人兴奋的新功能将与 J ...

  4. 使用springboot actuator监控应用

    微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现了异常如何快速定位是哪个环节出现了问题? ...

  5. vue-cli watch简单用法

    创建一个vue单文件 <template> <div id="test"> <h4 @click="changeMsg()" id ...

  6. python函数系列之sorted()

    一. 有时候需要对List.Dict进行排序 二.用法:sorted(iterable, cmp=None, key=None, reverse=False) 三.参数说明: iterable:是可迭 ...

  7. As/IDEA json自动生成java bean

    1.先安装GsonFormat插件:File-->Setting-->Plugins-->GsonFormat-->OK 2.new 一个新的Class空文件,然后 Alt+I ...

  8. JSP基础知识➣语法整理(二)

    A.脚本程序 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. 脚本程序的语法格式:<% 代码片段 %>,但是不能包含文件的方法和变量的声明 B.J ...

  9. Neo4j导入本地csv问题

    把要导入的文件放到D盘,LOAD CSV WITH HEADERS FROM "file:///D:/xx.csv" AS line create (:node); 总提示输入错误

  10. 一起学Hadoop——Hadoop的前世今生

    Hadoop是什么? Hadoop是一个处理海量数据的开源框架.2002年Nutch项目面世,这是一个爬取网页工具和搜索引擎系统,和其他众多的工具一样,都遇到了在处理海量数据时效率低下,无法存储爬取网 ...