【构造好题】CF1236C LAB

探讨了如何构造一个n×n的矩阵,使任意两行间的差异值最小,通过构造特定的矩阵模式,证明了当n为奇数时最小差异值最大为(n^2-1)/2,当n为偶数时最小差异值最大为n^2/2。

题目大意

定义两个长度为nnn的数列A,BA,BA,B的差异值为:在AAA中任取一个数uuu,在BBB中任取一个数vvv,使得u>vu>vu>v的数对对数。

现在有n2n^2n2个数字,编号为111~n2n^2n2,将这些数字放在一个n×nn\times nn×n的矩阵里,使任意两行间的差异值最小。

解析

我们考虑nnn很小的情况:

1.n=1   11.n=1\qquad\space\space\space11.n=1   1

2.n=2   1 42.n=2\qquad\space\space\space1\space 42.n=2   1 4

2 3\qquad\qquad\qquad2\space32 3

3.n=33.n=33.n=3,由样例知差异值最小为444,所以我们可以构造出下面的矩阵,使其差异值为444

1 6 7\qquad\qquad\qquad1\space6\space71 6 7

2 5 8\qquad\qquad\qquad2\space5\space82 5 8

3 4 9\qquad\qquad\qquad3\space4\space93 4 9

观察一下上面的矩阵,我们可以发现一个规律:

对于一个边长为nnn的矩阵,我们可以这样构造:

第一列1−n1-n1n正序,第二列n+1−2nn+1-2nn+12n倒序,……,直到排满矩阵。

我们抱着试一试的心态交了上去,发现离奇的过了全部的数据点。那么这是为什么呢?

正确性证明

由于我们的差异值具有方向,所以我们要从上往下计算一次差异值,再反方向计算一次。

我们先考虑nnn为奇数的情况。

那么我们的矩阵为:

[12n2n+1...n(n−1)+122n−12n+2...n(n−1)+232n−22n+3...n(n−1)+3...............nn+13n...n2] \begin{bmatrix} 1 & 2n &2n+1 &...&n(n-1)+1\\\\ 2 & 2n-1&2n+2&...&n(n-1)+2\\\\ 3 & 2n-2&2n+3&...&n(n-1)+3\\\\ ...&...&...&...&...\\\\ n & n+1&3n&...&n^2 \end{bmatrix} 123...n2n2n12n2...n+12n+12n+22n+3...3n...............n(n1)+1n(n1)+2n(n1)+3...n2

对于上面的行和下面的行比较,我们观察到第奇数行的数从上往下递增,偶数行从上往下递减,左边的行的所有数都小于右边的行。

那么上下任意两行比较的差异值为

0+2+2+4+4+...+(n−1)+(n−1)=n2−120+2+2+4+4+...+(n-1)+(n-1)=\frac{n^2-1}{2}0+2+2+4+4+...+(n1)+(n1)=2n21

我们再考虑从下往上比,按照同样的方式推出差异值为

1+1+3+3+...+(n−1)+(n−1)+n=n2+121+1+3+3+...+(n-1)+(n-1)+n=\frac{n^2+1}{2}1+1+3+3+...+(n1)+(n1)+n=2n2+1

n2+12>n2−12\frac{n^2+1}{2}>\frac{n^2-1}{2}2n2+1>2n21

所以任意两行间最小差异值的最大为n2−12\frac{n^2-1}{2}2n21

我们再考虑nnn为偶数的情况。

那么我们的矩阵为:
[12n2n+1...n222n−12n+2...n2−132n−22n+3...n2−2...............nn+13n...n(n−1)+1] \begin{bmatrix} 1 & 2n &2n+1 &...&n^2\\\\ 2 & 2n-1&2n+2&...&n^2-1\\\\ 3 & 2n-2&2n+3&...&n^2-2\\\\ ...&...&...&...&...\\\\ n & n+1&3n&...&n(n-1)+1 \end{bmatrix} 123...n2n2n12n2...n+12n+12n+22n+3...3n...............n2n21n22...n(n1)+1

从上往下比较,我们的差异值为

0+2+2+4+4+...+(n−2)+(n−2)+n=n220+2+2+4+4+...+(n-2)+(n-2)+n=\frac{n^2}{2}0+2+2+4+4+...+(n2)+(n2)+n=2n2

从下往上比较,我们的差异值为

1+1+3+3+...+(n−1)+(n−1)=n221+1+3+3+...+(n-1)+(n-1)=\frac{n^2}{2}1+1+3+3+...+(n1)+(n1)=2n2

任意两行间最小差异值最大为n22\frac{n^2}{2}2n2

因为有n2n^2n2个数,所以总差异值最大为

(n2−1)+(n2−2)+...+1=n4−n22(n^2-1)+(n^2-2)+...+1=\frac{n^4-n^2}{2}(n21)+(n22)+...+1=2n4n2

一共有n2−nn^2-nn2n行进行了比较,所以最小差异值=n4−n22(n2−n)=\frac{n^4-n^2}{2(n^2-n)}=2(n2n)n4n2

n4−n22(n2−n)≤n4−n22(n2−1)=⌊n22⌋\frac{n^4-n^2}{2(n^2-n)}\le\frac{n^4-n^2}{2(n^2-1)}=\lfloor\frac{n^2}{2}\rfloor2(n2n)n4n22(n21)n4n2=2n2

即当nnn为奇数时最小差异值最大为n2−12\frac{n^2-1}{2}2n21,当nnn为偶数时最小差异值最大为n22\frac{n^2}{2}2n2

证毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值