七夕祭

当然是要看蓝书P34的纸质题解的,然后(环形)均分纸牌也是很经典的一个模型,一定要记住

我们来补充一些细节

环形均分纸牌可链化证明,或者看算法提高课视频10:00的推导,\(x_1\)取某一个中位数,所以某一个\(x_i=0\),所以可链化

首先是P35那个前缀和的那个式子,这个式子算的是每两人之间的交换,与直接模拟是相同的,所以是正确的

然后证明七夕祭交换的合法性:

设通过环形均分纸牌算出来的数组\(p\)\(p[i]\)表示第\(i\)个人给第\(i+1\)个人的纸牌个数(负数为接受纸牌);不妨认为第\(1\)列与第\(n\)列之间没有交换

对于这一特定的数组,不妨从\(1\)开始向\(n\)进行操作。假设第一次遇到了无法进行交换的情况,此时在第\(i\)列,我们假设\(p[i]>0\),此时我们先找出\(i\)\(i+1\)一一对应的点(也就是行数相同的点),设有\(x\)个,除去这些点之后,第\(i\)列还有\(y\)个点,第\(i+1\)列还有\(z\)个点,那么此时一定有\(y<p[i]\)(因为无法交换)

\(p[i+1]\)不超过\(0\),则\(y>p[i]\)(即命题不成立),因为此时有\(x+y-p[i]=x+z+p[i]-p[i+1]=average\),即\(y+p[i+1]=2p[i]+z\),显然矛盾

\(p[i+1]\)大于\(0\),则先交换\(p[i+1]\),再交换\(p[i]\),先交换\(i+1\)的话,由于\(z=average+p[i+1]-x-p[i]\),故至少交换一一对应中的数\(p[i+1]-z=x+p[i]-average=2p[i]-y\)个,显然大于\(p[i]-y\),即交换了\(y\)个数之后还需要交换的数的数量,显然可以交换

我们也就证明了无论怎么排列,我们一定可以通过不经过任何列交换的情况下,将行搞成一模一样的,对列同理,所以我们可以分成两个独立的部分计算

然后引理一:对均分纸牌来说,我按照那个模拟算出来每两人之间的交换数目之后,不一定真的按模拟去做,而是以任意顺序选择任意间隙和任意交换牌数,答案都不变。比如说算出来1给2三张牌,3给2一张牌,那我可以先让1给2一张牌,再让3给2一张牌,再让1个2两张牌,or whatever答案都是一样的,可以用反证法证明。环形均分纸牌也满足,因为环形均分纸牌可以拆环成链按照均分纸牌处理

我们用数学归纳法严格证明一下上述结论,假设我们先通过蓝书的式子算出多退少补的数目,比如如下

我们从\(1\)\(n\)依次考虑交换,当第一次遇到无法交换(也就是手牌不足的时候),设此时为第\(i\)个人

如果第\(i\)个人应该给第\(i+1\)个人纸牌,那么可以知道,由于前\(i-1\)个人此时每个人的手牌数目都是平均数,所以我们第\(i\)个人的手牌数目大于平均数,也就是说一定能给,所以此时一定是第\(i+1\)个人给第\(i\)个人纸牌;而此时第\(i+1\)个人一定不可能给第\(i+2\)个人纸牌,否则的话有\(ix>sum_i,a_{i+1}<ix-sum_i,sum_{i+1}>(i+1)x\),其中\(x\)是平均数,\(sum_i\)是纸牌数目前缀和,\(a_i\)是第\(i\)个人的纸牌数目,那么可以推出\(sum_{i+1}>x+sum_i,a_{i+1}>x,sum_i<(i-1)x,sum_{i+1}<(i-1)x+a_{i+1},(i+1)x<(i-1)x+a_{i+1},a_{i+1}>2x\),重复上述推导过程可以得出\(a_{i+1}\)无穷大,显然不可能,于是第\(i+2\)个人给第\(i+1\)个人牌,一直这么下去直到第\(n\)个人,此时我们从第\(n\)个人开始倒序给牌就好了

所以由这个引理,我们将任何一种分布的摊点抽象成纸牌模型后,只要抽象出来的牌数的分布是一模一样的,那么最优答案就是一样的,因为我总能找到一种合法的交换摊点位置的方法,所以我可以分成两维考虑(这么考虑也是下界,我们找到了一种方法来达到下界)

posted @ 2023-12-06 19:22  最爱丁珰  阅读(21)  评论(0编辑  收藏  举报