APIO2024 T3 Magic Show
问题是特殊条件下的有损传输,考虑多项式插值。
多项式插值是天然的有损传输的媒介,一个 \(n\) 次多项式可以用 \(n+1\) 的点值确定,这就意味着如果我们有 \(n+1+d\) 个点值,那么任意损坏 \(d\) 个点值都是没有关系的。目前几个重要的有损传输的成果都是基于这个的。
我们考虑这样构造(树从 \(0\) 开始标号),取一个质数 \(p=107\) ,\([0,p)\) 标号内的点随便连,连通就行,这些点不传递信息,我们靠后面的 \(p+2\varepsilon(2\varepsilon\le p)\),(\(\varepsilon\)是待定参数) 个位置像前 \(p\) 个点连边表示出信息。由于我们前面只有 \(p\) 个点,多项式点值的值域我们无法控制,但是如果我们在 \(\%p\) 意义下考虑这个问题,也许还有救。
我们考虑在 \(\%p\) 意义下考虑把某个多项式转成点值传递过去,后面 \(p+2\varepsilon\) 个点我们依次在多项式中代入 \(0\) 到 \(p+2\varepsilon-1\),把得到的点值连向最前面的 \(p\) 个点表示这种点值。
刚刚说到“某个多项式”,具体的,我们把题目中的 \(X\) 转成一个 9 位 \(p\) 进制数,把这九个数当成多项式的系数,我们的 \(\varepsilon\) 就取 9。
题目会删掉其中的 \(p+\varepsilon\) 个,在最坏情况下,会全删后面的,但是不管怎么样,我们会留下 \(\varepsilon\) 个点值,于是我们就有 \(\varepsilon\) 个点值了,我们把这 \(\varepsilon\) 点值插回系数即可复原出我们原来的 \(X\)。
到此,主要做法已经讲完了。
我故意的凸显了思路,并隐蔽了一个错误(一开始就讲会很难理解这个补丁),读到这里请读者自行思考上述做法有何疏漏,思考完后展开看补丁。
补丁
由于我们的模数为 $p$ ,所以我们有 $f(x)=f(x+p)$,所以如果我们剩的那 $\varepsilon$ 个有配对的,就很不幸,信息量不够。所以我们把 $\varepsilon$ 翻倍取到 18,这样即使折半也能保证正确。至此,这题我们做到了 107+107+36=250 的点数的稳定做法。
关于这题其实还有一个用 CRT 的做法,点数比较多的时候也是稳定的可复原的,在这题上很优秀,但是理论上感觉复杂度可能不是特别优美(涉及到很神秘的数论分析,至少我一晚上没有特别理性的证法)。
插值做法在理论上相对更加优美,应该顺着这个插值思路可能还能挤点油水,我没细卡,可能有信息密度更大的构造,但是这种事情有不太重要也没有太大价值了。