题解 P2662 【牛场围栏】
温馨提示:在博客内观看体验更佳。
学到了一个新的知识点,记录一下。
首先,感谢 @Timsei 对本题的同余类
好吧,事实上这篇博客绝大部分都是搬运过来的。。。
现在,我们来考虑这一题怎么写。
在说这道题目的解法之前,为了叙述方便,我们先给出一些定义:
-
剩余系(类):假设
\ m\ 为一个给定的正整数,则我们可以把全体整数分成m个集合:\ K_0,K_1,K_2,...,K_{m-1}\ ,其中对于任意\ r\in \{0,1,2,...,m-1\}\ ,均有\ K_i=\{X\ |\ X\in Z,X\equiv i\ (mod\ m)\}\ ,我们就称\ K_0,K_1,K_2,...,K_{m-1}\ 为模\ m\ 的剩余系(类)。 -
完全剩余系:若
\ n\ 个数:\ a_1,a_2,a_3,...,a_n\ 种对于任意\ i,j\in \{1,2,3,...,n\}\ 且\ i\ne j\ ,均有\ i\not\equiv j\ (mod\ n)\ (\ i,j\ 不属于模\ n\ 的同一个剩余系),则我们称\ a_1,a_2,a_3,...,a_n\ 为模\ n\ 的完全剩余系,简称完系。
重点现在开始:
这个题目中总共会出现三种情况:
-
所有的围栏的长度都可以建造。
-
有围栏不能建造,但不存在最大的不能够建造的围栏的长度。
-
存在最大的不能够建造的围栏的长度。
我们分别考虑这三种情况:
第一种情况等价于长度为
充分性:因为长度为
必要性:因为所有的长度的围栏都可以建造,所以长度为
对于第二种情况,我们假设我们所有的可以得到的围栏的长度为
充分性:假设
必要性:若不存在最大值,考虑长度最短的那一根木料,不妨设其长度为
首先,
其次,令
若不存在最大值,则至少有一个剩余类不存在最大值。不妨设
当
设模
先证明一个引理一:若
若
可以推出另一个引理二:若(i,j)=d,i=pd,j=qd,则取0i,1i,…,(q-1)i,可以证明这q个数模q两两不同余,这一点可以直接由上面引理1得到,则这q个数模j分别为0d,1d,…,(q-1)d。
再证一个引理三:i|r,j|r,若(i,j)=1,令S=ai+bj,a,b>=0且a,b∈Z,则S可取遍r的完系。证明如下: 由(p,q)=1,我们可以取i,i2,…,ij这j个数是模j的一个完系,且ij|r,因此S可取遍r的一个完系。
同样我们还可推出一个引理四:i|r,j|r,(i,j)=d,i=pd,j=qd,r=kd,令S=ai+bj,a,b>=0且a,b∈Z,则S可取遍模r分别为0d,1d,…,(k-1)d的剩余类。(由引理3,仿照引理2推得)
依次考虑每一个存在最大值的剩余类Ka1,Ka2,…, Kaw。则对于每一个剩余类Kai,则所有的剩余类Kj都有最大值,其中(r,ai)|j(这一点可由引理2得到),令bi=(r,ai),则Kbi有最大值。
依次考虑Kb1,K b 2,…, Kbw,令d=(b1,b2,…,bw),则所有的剩余类Kj都有最大值,其中d|j(这是有引理4得到的)。
因此不存在最大值时,d>1,原先的木料也可以表示为,k*r+bi,因此所有的木料的最大公约数大于1。
所以最大值不存在等价于所有木料长度的最大公约数大于1。
updating