关于正交拉丁方的构造与应用
本文同步发表于 [笔记] 关于正交拉丁方的构造与应用 - 沉石鱼惊旋 的博客。
定义
拉丁方阵(英语:Latin square)是一种
拉丁方阵有此名称是因为瑞士数学家和物理学家欧拉使用拉丁字母来做为拉丁方阵里的元素的符号。
设有两个阶数相同的拉丁方阵
摘自于 WikiPedia 的『拉丁方阵』词条。
朝花夕拾
对于
然而在 1959 年,On the falsity of Euler's conjecture about the non-existence of two orthogonal Latin squares of order 4t + 2 这篇文章推翻了这一猜想。
前言
我在 20251021 打模拟赛时,做到了这样一个题:Elegant Square - Problem - QOJ.ac。而模拟赛版本要求做到
我做了一整场,22 分遗憾离场。赛后发现改了几个字节就 50 分了。
这不重要,重要的是,Leo_lele 指出,这个问题的本质是构造正交拉丁方。而且,有了一组正交拉丁方之后,我们可以很轻松的做到这个问题的下界(?)。具体的,第一个矩形填前
那么现在问题是如何构造一对正交拉丁方,我们查阅了许多资料,问了无数个 AI,都没有获得现成的构造代码。且碍于语言不通,我们阅读英语论文较为吃力,这个问题迟迟没有进展。
鉴于我俩做不出来这个问题,于是 yyc 把它挂到了知乎上:怎样构造 2p(4t+2)形式的正交拉丁方对? - 知乎。同时 yyc 在精英培训群里提问,被杜老师看到了,杜老师指出了有了正交拉丁方 E - Cross Sum Construction 则这个题也可以轻松通过。
我邀请了较为熟悉的 MatrixGroup 老师。矩阵群老师连夜阅读论文,当晚便阅读了 Combinatorial Designs and Tournaments 并写下了知乎回答并同步发表在了知乎专栏与洛谷专栏。
- 正交拉丁方的构造 - 知乎
- 正交拉丁方的构造 - 洛谷专栏
第二天起床之后我便阅读了文章。在持续骚扰 ChatGPT、矩阵群和 yyc 一天之后,我成功写出了 43kb 的代码,通过了
具体代码在 chenyuxuan2009/OrthogonalLatinSquare 可以阅读。作为竞赛选手我已经尽力把代码写的工程风格让它可读一点了 qwq。在此需要再次感谢 ChatGPT 为我提供了有限域乘法模板,以及找出了
在 OI 中的使用
接下来,我会举两个题目的例子。
QOJ12905
应该是爆了目前网上所有代码的标,包括 pp_orange 留下来的圣遗物 std。
首先有一些很自然的想法:我们找到两个矩阵,每个矩阵填一些质数,且一个质数在每行和每列都出现了一次,然后把他和前一个矩阵乘起来。如果找不到,我们再加一个矩形。事实上,网络上此题几乎所有题解都是这么做的,即使不是也需要引入
不难发现这个就是在找一对正交拉丁方。而我们根据前人的智慧,除了
有了正交拉丁方,直接就找出来了。但是,我们真的需要两个质数吗?稍微想一下可以发现,我们第一个矩阵可以填若干个 Square-Free 的数。第二个矩阵再填一些质数。
依此,我们在
Submission #1574614 - QOJ.ac
AGC064E
需要参考一些原题解 Editorial - AtCoder Grand Contest 064 和洛谷目前唯一一篇题解 AT_agc064_e [AGC064E] Cross Sum Construction题解 - 洛谷专栏。
总之,对于
对于其他情况,我们已有两个拉丁方
Submission #70385883 - AtCoder Grand Contest 064
代码的
另外杜老师指出这个题写个搜子能过
后话
OLS 相关内容,我研究了半周。本周二打完模拟赛我做了半天的 OLS 相关内容,读了一晚上的论文,却没有太大收获。本以为这是浪费时间,作为高一正式选手我可能把时间浪费在这上面是很愚蠢的,有这个时间我的同届对手们已经卷了十个题了(
但是在一步步讨论、挖掘、请教中,做这种“科研”也是有他的独特魅力的。前人智慧,令我叹为观止。
现在我确乎是浪费了半周时间在这上面。不过能在 1024 这个独特的二进制日,能够向大家展示这份成果,尤其是我一天写完的这 1147 行 43547 byte 的 ols.h 代码。有和我一样喜欢把时间浪费在研究这种东西上的朋友,我对此感到很幸运。
最后再次感谢矩阵群、yyc、ChatGPT、dyh 老师以及 tby 老师。