AGC 027D.Modulo Matrix(构造 黑白染色)
\(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(构造 黑白染色)的更多相关文章
- agc027D - Modulo Matrix(构造 黑白染色)
题意 题目链接 构造一个\(n * n\)的矩阵,要求任意相邻的两个数\(a,b\),使得\(max(a,b) \% min(a,b) \not = 0\) Sol 我的思路: 假设\(mod = 1 ...
- AGC027 D - Modulo Matrix 构造
目录 题目链接 题解 代码 题目链接 AGC027 D - Modulo Matrix 题解 从第左上角第一个点开始染色,相邻不同色,染法唯一 那么一个点的四周与他不同色,我们另这个点比四周都大,那么 ...
- AtCoder Grand Contest 027 (AGC017) D - Modulo Matrix 构造
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC027C.html 题解 首先我们假装 max mod min = 1 然后对着这个构造. 将各自黑白染色, ...
- 【AGC018F】Two Trees 构造 黑白染色
题目描述 有两棵有根树,顶点的编号都是\(1\)~\(n\). 你要给每个点一个权值\(a_i\),使得对于两棵树的所有顶点\(x\),满足\(|x\)的子树的权值和\(|=1\) \(n\leq 1 ...
- 「AGC027D」Modulo Matrix
「AGC027D」Modulo Matrix 传送门 神仙构造题. 首先考虑一个非常自然的思路,我们把棋盘黑白染色后会变成一个二分图,黑色棋子只会与白色棋子相邻. 也就是说,我们可以将二分图的一部随便 ...
- 【BZOJ-1976】能量魔方Cube 最小割 + 黑白染色
1976: [BeiJing2010组队]能量魔方 Cube Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 884 Solved: 307[Submi ...
- BZOJ-2756 奇怪的游戏 黑白染色+最大流+当前弧优化+二分判断+分类讨论
这个题的数据,太卡了,TLE了两晚上,各种调试优化,各种蛋疼. 2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit ...
- POJ 1466 Girls and Boys 黑白染色 + 二分匹配 (最大独立集) 好题
有n个人, 其中有男生和女生,接着有n行,分别给出了每一个人暗恋的对象(不止暗恋一个) 现在要从这n个人中找出一个最大集合,满足这个集合中的任意2个人,都没有暗恋这种关系. 输出集合的元素个数. 刚开 ...
- acdream 1056 (黑白染色)
题意:给你一些关系,每个关系是两只马的名字,表示这两个马不能在一个分组里,问你能否将这些马分成两组. 黑白染色,相邻的点染不同颜色.bfs搞即可,水题. /* * this code is made ...
随机推荐
- java----DOS命令
dir /? 查看帮助 dir /s 查看当前的目录,以及子目录
- CSS3媒体查询的部分重要属性
width:视口宽度 height:视口高度 device-width:渲染表面的宽度,就是设备屏幕的宽度 device-height:渲染表面的高度,就是设备屏幕的高度 orientation:检查 ...
- Allegro PCB Design GXL (legacy) 由零散的对象构成一个Shape
Allegro PCB Design GXL (legacy) version 16.6-2015 从DXF文件中导入板框之后,发现板框是由Line Segment.Arc Segment等对象组成, ...
- Allegro PCB Design GXL (legacy) 从dxf文件中导入板框
Allegro PCB Design GXL (legacy) version 16.6-2015 新建brd文件,并设置好相应的参数之后,点击菜单:File > Import > DXF ...
- Java File mkdir() mkdirs()
使用mkdir()和mkdirs()创建文件夹的区别. 1.mkdir() 如果父目录不存在,则创建失败. 2.mkdirs() 如果父目录不存在,连同父目录一起创建. 注意,在IO_Study01文 ...
- 卸载列表信息——Uninstall注册表
今天用InstallShield打包了一个安装程序,安装顺利完成了,但是当我去控制面板准备卸载时,发现我的程序没有详细的信息,正常的软件信息如下图: 而我的程序没有发布者,大小和版本,也没有图标,于是 ...
- Python初探list
今天要说一个新概念--list,中文可以翻译成列表,是用来处理一组有序项目的数据结构.想象一下你的购物清单.待办工作.手机通讯录等等,它们都可以看作是一个列表.说它是新概念也不算确切,因为我们之前已经 ...
- 一脸懵逼学习keepalived(对Nginx进行热备)
1:Keepalived的官方网址:http://www.keepalived.org/ 2:Keepalived:可以实现高可靠: 高可靠的概念: HA(High Available), 高可用性集 ...
- springboot学习(一):创建项目
package com.glory.demo.Controller; import org.springframework.stereotype.Controller; import org.spri ...
- 【Arduino】Arduino接收字符串
[Arduino]Arduino接收字符串 相关文章 [Arduino]开发入门[十]Arduino蓝牙模块与Android实现通信 在[Arduino]开发入门[十]Arduino蓝牙模块与Andr ...