[TAD] Triangles of Absolute Differences-反帕斯卡三角形
[IMO2018] Triangles of Absolute Differences-反帕斯卡三角形
前言 叠甲
笔者不是学数竞的,在此感谢我的数竞生为我讲解题目。
笔者学艺不精,且知识面浅薄。
所以本文章仅用作搞抽象 (争取练就惊人注意力 。
正文
一、引入
看完这道题目的要求,相信大家都能想起一个很熟悉的东西:
杨辉三角形
杨辉三角(帕斯卡三角形),是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。它把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。
由于杨辉三角的特殊性质,我们可以从中直观地得出二项式定理:
(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\) 行的反帕斯卡三角形(最终希望产生矛盾),那么其一定会包含一些 “较小的数” 和 “较大的数” 。
那么接下来的工作重点就来到了:
- “较大”与“较小”该如何定义;
- 这些数都有哪些可以被我们利用的性质。
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\sim n\) 存在于三角形的每一行中,并且为每一行中 “最小的数” 。
“较大的数”的性质
对于“较大的数”的分布,我们只能确定第 \(n\) 行的 “最大的数” 为 \(\frac {n\times(n+1)}{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}
\]
- 除第 \(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}
\]
- 第 \(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}
\]
- 第 \(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\) 行的反帕斯卡三角形了。
具体证明大家可以看两篇论文:
- Triangles of Absolute Differences 基于树形结构证明
- 1977 Exact Difference Triangles 完美的 \(n\) 阶反帕斯卡三角形
于是文章到这就没了,我也不知道自己在干些什么。
[TAD] Triangles of Absolute Differences-反帕斯卡三角形的更多相关文章
- 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 ...
- leetcode-118-Pascal's Triangle(生成具有n行的帕斯卡三角形)
题目描述: Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. Example ...
- 【LeetCode-面试算法经典-Java实现】【118-Pascal's Triangle(帕斯卡三角形)】
[118-Pascal's Triangle(帕斯卡三角形(杨辉三角))] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given numRows, generate ...
- 119 Pascal's Triangle II 帕斯卡三角形 II Pascal's Triangle II
给定一个索引 k,返回帕斯卡三角形(杨辉三角)的第 k 行.例如,给定 k = 3,则返回 [1, 3, 3, 1].注:你可以优化你的算法到 O(k) 的空间复杂度吗?详见:https://leet ...
- 118 Pascal's Triangle 帕斯卡三角形 杨辉三角形
给定 numRows, 生成帕斯卡三角形的前 numRows 行.例如, 给定 numRows = 5,返回[ [1], [1,1], [1,2,1], [1,3,3,1], [1 ...
- 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 ...
- 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, ...
- WebGl 利用drawArrays、drawElements画三角形
效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- leetcode-帕斯卡三角形
帕斯卡三角形 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4 ...
- Directx11教程(64) tessellation学习(6)-PN Triangles
原文:Directx11教程(64) tessellation学习(6)-PN Triangles 前面我们用tessellation细分三角形或者四边形,产生的细分点都是在三角形或四边形 ...
随机推荐
- 异常处理,内置方法(__new__,__init__,__del__析构方法,单例模式,item系列)
__new__ 创建一个对象 class A: def __init__(self): print('in init') def __new__(cls): print('in new') self= ...
- 【原创】VSCode 快捷键汇总(已整理成一张 A4 纸大小,方便打印)
由于经常记不住 VSCode 的快捷键,每次查找不方便,于是乎做了一份 VSCode 快捷键汇总,已整理成一张 A4 纸大小,方便打印,这样查找就直观多了~ 直接保存图片,横向打印即可.
- 记录_玩客云v1.0大坑!!!
刷机 短接后刷入uboot固件, 制作U盘镜像启动会出现莫名其妙的内存写入失败!!!!!!!!!!! 但是这并没坏 拆机 , 短接刷armbian v5.67 内核 3.10, 这个版本刷完后什么特 ...
- 推荐2款实用的持续集成与部署(CI&CD)自动化工具
前言 最近DotNetGuide技术社区交流群有不少同学在咨询:持续集成与部署(CI&CD)自动化工具有什么好用的推荐?今天大姚给大家推荐2款实用且免费的持续集成与部署(CI&CD)自 ...
- C# 获取PDF页面大小、方向、旋转角度
在处理PDF文件时,了解页面的大小.方向和旋转角度等信息对于PDF的显示.打印和布局设计至关重要.本文将介绍如何使用免费.NET 库通过C#来读取PDF页面的这些属性. C# 读取PDF页面大小(宽度 ...
- 充分利用HarmonyOS NEXT:开发者的全功能指南
随着技术的不断进步,开发者们面临着如何在复杂的技术环境中创造出卓越应用的挑战.在当今的科技浪潮中,如何抓住创新的机遇?HarmonyOS NEXT的发布,带来了全新的机遇和功能.本文将探讨开发者如何充 ...
- Windows提权方式汇总
windows 提权 一.土豆(potato)家族提权 原理 土豆提权就是通过 windows 的 COM(Component Object Model,组件对象模型)类.向指定的服务器端口发送 NT ...
- [Udemy] AWS Certified Data Analytics Specialty - 3.Processing
Lambda Lambda 经常起胶水的作用,就是粘合不同的service. 如下图例子 另外Requirement #1 也是一个例子,还有Requirement #3 除了Kinesis Data ...
- .NET 多版本兼容的精美 WinForm UI控件库
前言 有粉丝小伙伴在后台留言咨询有没有WinForm 控件库推荐,现在就给安排上. .NET 平台进行 Windows 应用程序开发的我们来说,找一个既美观又实用的 WinForm UI 控件库至关重 ...
- 前端项目通过 Nginx 发布至 Linux,并通过 rewrite 配置访问后端接口
〇.前言 本文通过将 arco 框架的前端项目,部署至 CentOS 7,并访问同服务器的 WebAPI 接口,来简单演示一下,如何将前端项目发布至 Linux 系统. 关于 ASP.NET WebA ...