[IMO2018] Triangles of Absolute Differences-反帕斯卡三角形

前言 叠甲

笔者不是学数竞的,在此感谢我的数竞生为我讲解题目。

笔者学艺不精,且知识面浅薄。

所以本文章仅用作搞抽象 (争取练就惊人注意力 。

正文

一、引入

看完这道题目的要求,相信大家都能想起一个很熟悉的东西:

杨辉三角形

杨辉三角(帕斯卡三角形),是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。它把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。

由于杨辉三角的特殊性质,我们可以从中直观地得出二项式定理:

\[\small
(x+a)^n = \sum_{k=0}^{n} C_n^ka^{n-k} b^k
\]

帕斯卡三角形是上面的数等于下面的数之和,反帕斯卡三角形是上面的数等于下面的数之差,

两者概念十分的相似,那么我们就很好地理解了反帕斯卡三角形是个什么东西。

显然以上内容与本题无关。

二、证明思路

1、性感理解(?)

问题为是否存在一个 \(n\) 行的反帕斯卡三角形,即该三角形中包含 \(1\sim \frac {n\times(n+1)}{2}\) 中所有的整数。

首先可以列举出一些较为简单的情况:

通过观察简单情况以及直观感受,我们发现:

似乎那些 “看起来小一些的数” 多在三角形顶部,“看起来大一点的数” 多在三角形底部。

那么对于一般性问题,我们可以基于这些 “没什么道理但十分直观的感受” 进行思考。

  • 考虑如果存在一个为 \(n\) 行的反帕斯卡三角形(最终希望产生矛盾),那么其一定会包含一些 “较小的数”“较大的数”

那么接下来的工作重点就来到了:

  1. “较大”与“较小”该如何定义;
  2. 这些数都有哪些可以被我们利用的性质。

2、“较大”与“较小”数的定义

设一个有 \(n\) 行的反帕斯卡三角形中:

  • 第 \(i\) 行最大的数为 \(mx_i\),最小的数为 \(mn_{i}(1\le i\le n)\),且有 \(mx_1==mn_1\)。

考虑 \(mx_i(1\le i\le n-1)\) 下方的两个数分别为 \(d\) 和 \(r\):

\[\small
\begin{aligned}
\because\space &mx_i = |d - r| \le mx_{i+1}- mn_{i+1} \\
\therefore\space &mx_{i+1}-mx_i \ge mn_{i+1} \\
\because\space &\sum_{i=1}^{n-1}(mx_{i+1}-mx_i)\ge\sum_{i=1}^{n-1}{mn}_{i+1} \\
\therefore\space &mx_1+\sum_{i=1}^{n-1}mn_{i+1} \le mx_n \\
\therefore\space &\sum_{i=1}^{n}mn_i \le mx_n\\
\end{aligned}
\]

最后的结论如果仅凭自己的直观感受,貌似是显然易见的,但这与 “较大”“较小”的数有何关系呢?

\[\small
\begin{aligned}
\because\space &mn_i\space为每一行中最小的数 \\
\therefore\space &\sum_{i=1}^n {mn}_i \ge \sum_{i=1}^n i\\
\therefore\space &\sum_{i=1}^ni \le {mx}_n\\
\because\space &mx_n \ge \sum_{i=1}^{n} i\\
\therefore\space &mx_n=\sum_{i=1}^ni=\frac {n\times(n+1)}{2}\\
\therefore\space &\sum_{i=1}^n{mn}_i = \sum_{i=1}^n i\\
\therefore\space &mn \in{[1,n]}\\
\therefore\space &整数\space1\sim n\space恰分布在三角形的每一行中,\\
&且为每一行中最小的数\\
\end{aligned}
\]

到此,我们就证明了 \(1\sim n\) 存在于三角形的每一行中,并且为每一行中“最小的数”。回看我们所列举的几个三角形,发现它们都满足这个条件。

并且,由于在三角形中,靠近顶部的数字较少,靠近底部的数字较多,且最大的数在三角形的最底部,所以带给了我们一种

似乎那些 “看起来小一些的数” 多在三角形顶部,“看起来大一点的数” 多在三角形底部

的 (惊人注意力 直观感受。

既然 \(1\sim n\) 在每一行都有且是三角形中最小的数字,那么在一个有 \(n\) 行的反帕斯卡三角形中,不妨:

  • 令 \(sml\) 表示那些 “较小的数” ,且 \(1\le sml \le n\);
  • 对称的,令 \(lag\) 表示那些 “较大的数” ,且 \(\frac {n\times(n+1)}{2}-n\le lag \le\frac {n\times(n+1)}{2}\);

3、“较大”与“较小”数的性质

“较小的数”的性质

  1. 数 \(1\sim n\) 存在于三角形的每一行中,并且为每一行中 “最小的数”

“较大的数”的性质

  1. 对于“较大的数”的分布,我们只能确定第 \(n\) 行的 “最大的数” 为 \(\frac {n\times(n+1)}{2}\),而无法确定每行中存在的 “较大的数” 是否唯一。

  2. 对于两个互异的“较大的数 \(lag_x\) 和 \(lag_y\),其差的绝对值一定为一个 “较小的数”

\[\small
\begin{aligned}
\because\space &\frac {n\times(n+1)}{2}-n\le lag \le\frac {n\times(n+1)}{2} \\
\therefore\space &1\le |lag_x-lag_y| \le n
\end{aligned}
\]
  1. 除第 \(n\) 行的“较大的数”外,其余行的“较大的数”都是由 一个“较大的数”与一个“较小的数” 相减得到的。
\[\small
\begin{aligned}
\because\space &1\le sml \le n \\
\therefore\space &1\le |sml_x-sml_y| \le n-1 \\
\because\space &存在“较大的数”性质 \space2\\
\therefore\space &lag_x = lag_y-sml_y
\end{aligned}
\]
  1. 第 \(n\) 行最多有两个“较大的数”相邻
\[\small
\begin{aligned}
假&设第\space n\space行存在\space K\space个“较大的数”相邻\\
由&“较大的数”性质\space2\space可知:第\space n-1\space行存在\space K-1\space个“较小的数”\\
\because\space &存在“较小的数”性质 \space1 \\
\therefore\space &K-1=1\\
\therefore\space &K=2
\end{aligned}
\]
  1. 第 \(n\) 行最多存在 \(1+\lfloor n/2 \rfloor\) 个“较大的数”(每两个“较大的数”之间必有一个“较小的数”隔开)。
\[\small
\begin{aligned}
\because\space &存在“较大的数”性质\space4 \\
&且第\space n\space行共有\space n\space个数 \\
\therefore\space &第\space n\space行最多存在\space 1+\lfloor n/2 \rfloor\space个“较大的数”
\end{aligned}
\]

4、最后开始解题

显然有一个性质:总存在第 \(n-T+1\) 行,使得第 \(1 \sim n-T\) 行都不存在“较大的数”。

我们在前面“较大的数”五条性质的基础上,希望探究 \(T\) 可能存在的性质,以此来推出矛盾完成题目。

我们发现了很多关于 \(n\) 的性质,所以考虑把 \(T\) 与 \(n\) 扯上关系。

我们先来寻找 \(mx_{n-T+1}\) 的边界。

\[\small
\begin{aligned}
下&界我们是知道的:mx_{n-T+1} \ge lag_{min} = \frac {n\times(n+1)}{2}-n \\
上&界考虑“局部累加”: \\
\because\space &mn_i \le mx_i-mx_{i-1}\\
\therefore\space &\sum_{i=n-T+2}^{n} mn_i \le \sum_{i=n}^{n-T+2}{mx_i-mx_{i-1}} = mx_n-mx_{n-T+1}\\
\therefore\space &{mx}_{n-T+1} \le {mx}_n - \sum_{i=n-T+2}^{n}{mn}_i\\
\because\space &\sum_{i=n-T+2}^{n}{mn}_i \ge \sum_{i=1}^{T-1}i\\
&且\space mx_n = \frac {n\times(n+1)}{2}\\
\therefore\space &{mx}_{n-T+1} \le \frac {n\times(n+1)}{2} - \frac {T\times(T-1)}{2}
\end{aligned}
\]

发现在 \(mx_{n-T+1}\) 的上界中 \(T\) 与 \(n\) 有关系。

然后,我们再来寻找 \(T\) 的范围:

\[\small
\begin{aligned}
\because\space &第 \space n \space行最多存在\space 1+\lfloor n/2 \rfloor\space个“较大的数”\\
&且存在“较大的数”性质\space 3\space以及“较小的数”性质\\
\therefore\space &第\space n-1 \space行最多存在\space 2 \space个“较大的数”\\
&且如果有\space 2\space个“较大的数”则其必相邻\\
\therefore\space &第\space n-2 \space行最多存在1个“较大的数”\\
\therefore\space &第\space 1\sim n-T+2 \space行每行都最多存在\space 1\space个“较大的数”\\
\because\space &“较大的数”共有\space n+1 \space个\\
\therefore\space &n+1 \le (1+\lfloor n/2 \rfloor) +2+(T-2)\times 1\\
\therefore\space &T \ge n-\lfloor n/2 \rfloor
\end{aligned}
\]

此时,\(T\) 的下界与 \(n\) 有关系。

所以我们希望通过 \(mx_{n-T+1}\) 与 \(T\) 推出矛盾。

\[\small
\begin{aligned}
当&\space n = 2018\space 时,T\ge1009\\
\because\space &{mx}_{n-T+1} \le \frac {n\times(n+1)}{2} - \frac {T\times(T-1)}{2}\\
\therefore\space &{mx}_{2019-T} \le \frac {2018\times2019}{2} - \frac {T\times(T-1)}{2}\\
\therefore\space &{mx}_{2019-T} \le \frac {2018\times2019}{2} - \frac {1009\times(1008)}{2} = 1528635\\
\because\space &mx_{n-T+1} \ge \frac {n\times(n+1)}{2}-n \\
\therefore\space &mx_{2019-T} \ge {2018\times(2019)}{2} - 2018 = 2035153\\
发&现此时推出了关于\space mx_{2019-T}\space的矛盾\\
那&么当\space n=2018\space时就不存在反帕斯卡三角形
\end{aligned}
\]

5、思考题目的边界

容易想到一定存在一个 \(n\) 使得不存在大于 \(n\) 行的反帕斯卡三角形。

也就是说,我们所能证明的边界是对于 \(mx_{n-T+1}\) 恰好无法推出矛盾,即求:

\[\small
\begin{aligned}
&\frac {n\times(n+1)}{2}-n \le \frac {n\times(n+1)}{2} - \frac {T\times(T-1)}{2}\space的最大整数解\\
\because\space &T \ge n-\lfloor n/2 \rfloor\\
\therefore\space &求:\frac {n\times(n+1)}{2}-n \le \frac {n\times(n+1)}{2} - \frac {(n-\lfloor n/2 \rfloor)\times(n-\lfloor n/2 \rfloor-1)}{2} \space的最大整数解\\
&解得:n = 8
\end{aligned}
\]

也就是说,我们用前面的方法可以证明当 \(n>8\) 时,不存在有 \(n\) 行的反帕斯卡三角形。

后记

我们的方法只能证明 \(n>8\) 时不存在有 \(n\) 行的反帕斯卡三角形,总之是可以做对这道题目。

但其实当 \(6\le n\) 是,就不存在有 \(n\) 行的反帕斯卡三角形了。

具体证明大家可以看两篇论文:

  1. Triangles of Absolute Differences 基于树形结构证明
  2. 1977 Exact Difference Triangles 完美的 \(n\) 阶反帕斯卡三角形

于是文章到这就没了,我也不知道自己在干些什么。

[TAD] Triangles of Absolute Differences-反帕斯卡三角形的更多相关文章

  1. leetcode-119-Pascal's Triangle II(生成某一行的帕斯卡三角形)

    题目描述:   Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle ...

  2. leetcode-118-Pascal's Triangle(生成具有n行的帕斯卡三角形)

    题目描述: Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. Example ...

  3. 【LeetCode-面试算法经典-Java实现】【118-Pascal's Triangle(帕斯卡三角形)】

    [118-Pascal's Triangle(帕斯卡三角形(杨辉三角))] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given numRows, generate ...

  4. 119 Pascal's Triangle II 帕斯卡三角形 II Pascal's Triangle II

    给定一个索引 k,返回帕斯卡三角形(杨辉三角)的第 k 行.例如,给定 k = 3,则返回 [1, 3, 3, 1].注:你可以优化你的算法到 O(k) 的空间复杂度吗?详见:https://leet ...

  5. 118 Pascal's Triangle 帕斯卡三角形 杨辉三角形

    给定 numRows, 生成帕斯卡三角形的前 numRows 行.例如, 给定 numRows = 5,返回[     [1],    [1,1],   [1,2,1],  [1,3,3,1], [1 ...

  6. CodeForces - 682E: Alyona and Triangles(旋转卡壳求最大三角形)

    You are given n points with integer coordinates on the plane. Points are given in a way such that th ...

  7. python3练习-杨辉三角/帕斯卡三角形

    杨辉三角形式如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 # 期待输出: # [1] # [1, 1] # [1, 2, 1] # [1, 3, 3, ...

  8. WebGl 利用drawArrays、drawElements画三角形

    效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  9. leetcode-帕斯卡三角形

    帕斯卡三角形 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4 ...

  10. Directx11教程(64) tessellation学习(6)-PN Triangles

    原文:Directx11教程(64) tessellation学习(6)-PN Triangles       前面我们用tessellation细分三角形或者四边形,产生的细分点都是在三角形或四边形 ...

随机推荐

  1. 异常处理,内置方法(__new__,__init__,__del__析构方法,单例模式,item系列)

    __new__ 创建一个对象 class A: def __init__(self): print('in init') def __new__(cls): print('in new') self= ...

  2. 【原创】VSCode 快捷键汇总(已整理成一张 A4 纸大小,方便打印)

    由于经常记不住 VSCode 的快捷键,每次查找不方便,于是乎做了一份 VSCode 快捷键汇总,已整理成一张 A4 纸大小,方便打印,这样查找就直观多了~ 直接保存图片,横向打印即可.

  3. 记录_玩客云v1.0大坑!!!

    刷机 短接后刷入uboot固件, 制作U盘镜像启动会出现莫名其妙的内存写入失败!!!!!!!!!!! 但是这并没坏 拆机 , 短接刷armbian v5.67  内核 3.10, 这个版本刷完后什么特 ...

  4. 推荐2款实用的持续集成与部署(CI&CD)自动化工具

    前言 最近DotNetGuide技术社区交流群有不少同学在咨询:持续集成与部署(CI&CD)自动化工具有什么好用的推荐?今天大姚给大家推荐2款实用且免费的持续集成与部署(CI&CD)自 ...

  5. C# 获取PDF页面大小、方向、旋转角度

    在处理PDF文件时,了解页面的大小.方向和旋转角度等信息对于PDF的显示.打印和布局设计至关重要.本文将介绍如何使用免费.NET 库通过C#来读取PDF页面的这些属性. C# 读取PDF页面大小(宽度 ...

  6. 充分利用HarmonyOS NEXT:开发者的全功能指南

    随着技术的不断进步,开发者们面临着如何在复杂的技术环境中创造出卓越应用的挑战.在当今的科技浪潮中,如何抓住创新的机遇?HarmonyOS NEXT的发布,带来了全新的机遇和功能.本文将探讨开发者如何充 ...

  7. Windows提权方式汇总

    windows 提权 一.土豆(potato)家族提权 原理 土豆提权就是通过 windows 的 COM(Component Object Model,组件对象模型)类.向指定的服务器端口发送 NT ...

  8. [Udemy] AWS Certified Data Analytics Specialty - 3.Processing

    Lambda Lambda 经常起胶水的作用,就是粘合不同的service. 如下图例子 另外Requirement #1 也是一个例子,还有Requirement #3 除了Kinesis Data ...

  9. .NET 多版本兼容的精美 WinForm UI控件库

    前言 有粉丝小伙伴在后台留言咨询有没有WinForm 控件库推荐,现在就给安排上. .NET 平台进行 Windows 应用程序开发的我们来说,找一个既美观又实用的 WinForm UI 控件库至关重 ...

  10. 前端项目通过 Nginx 发布至 Linux,并通过 rewrite 配置访问后端接口

    〇.前言 本文通过将 arco 框架的前端项目,部署至 CentOS 7,并访问同服务器的 WebAPI 接口,来简单演示一下,如何将前端项目发布至 Linux 系统. 关于 ASP.NET WebA ...