题解 P6269 【[SHOI2002]空中都市】

图兰定理板子awa

珂能会有更好的阅读体验


图兰定理:若图 GG 中有 nn 个点,且完全图 KrK_{r} 不是 GG 的子图,则 GG 中的边数最多为 (11r1)n22\left\lfloor\left(1-\dfrac{1}{r-1}\right)\cdot\dfrac{n^2}{2}\right\rfloor

本题就是 r=3r=3 的情况,也就是不存在三角形。此时最大边数为:n24\left\lfloor\dfrac{n^2}{4}\right\rfloor

这里证明一下 r=3r=3 时的情况awa。

首先给出构造:我们把 n2\left\lfloor\dfrac{n}{2}\right\rfloor 个点放在「左边」,n2\left\lceil\dfrac{n}{2}\right\rceil个点放在「右边」,再将「左边」的每个点都与「右边」的每个点连上一条边。

此时,图 GG 中不存在两两相连的三个点,且总边数为 n2n2=n24\left\lfloor\dfrac{n}{2}\right\rfloor\cdot\left\lceil\dfrac{n}{2}\right\rceil=\left\lfloor\dfrac{n^2}{4}\right\rfloor

下面证明这种构造的确是最优的构造。

首先这 nn 个点中必有一个点的度数最大,记为 AA。设 deg(A)=k\deg(A)=k

设与 AA 相连的这 kk 个点分别为 B1,B2,,BkB_1,B_2,\dots,B_k,则 i,j[1,k],Bi\forall i,j\in[1,k],B_iBjB_j 不相连,否则 A,Bi,BjA,B_i,B_j 构成了一个三角形,不符合条件。

于是 i[1,k]\forall i\in[1,k]BiB_i 至多与 AA 和剩下的 nk1n-k-1 个点相连,即 i[1,k],deg(Bi)nk\forall i\in[1,k],\deg(B_i)\le n-k

设剩下的 nk1n-k-1 个点分别为 C1,C2,,Cnk1C_1,C_2,\dots,C_{n-k-1} ,由于 AA 是度数最大的,故 i[1,nk1]\forall i\in[1,n-k-1],有 deg(Ci)deg(A)=k\deg(C_i)\le \deg(A)=k

现在,我们来看一看整个图中有多少边。

此时图中边数为:

E=deg(X)2=deg(A)+i=1kdeg(Bi)+i=1nk1deg(Ci)2=k+k(nk)+(nk1)k2=k(nk)n24\begin{aligned} |E|&=\dfrac{\sum\deg(X)}{2}\\ &=\dfrac{\deg(A)+\sum_{i=1}^{k}\deg(B_i)+\sum_{i=1}^{n-k-1}\deg(C_i)}{2}\\ &=\dfrac{k+k\cdot(n-k)+(n-k-1)\cdot k}{2}\\ &=k(n-k)\\ &\le\dfrac{n^2}{4} \end{aligned}

最后一步是用了一下基本不等式放缩,取等条件为 k=n2k=\left\lfloor\dfrac{n}{2}\right\rfloor

而已经给出了使总边数为 n24\left\lfloor\dfrac{n^2}{4}\right\rfloor 的构造,又证明了边数不超过 n24\left\lfloor\dfrac{n^2}{4}\right\rfloor,所以本题答案就是 n24\left\lfloor\dfrac{n^2}{4}\right\rfloor

极简代码:

#include<cstdio>
#include<cstdlib>

using namespace std;

int n;

int main(void){
    
    scanf("%d",&n);
    printf("%d\n",n*n/4);

    return 0;
}

PS\text{PS}:这里顺便提一下其他题解中打表发现的递推式awa。

@Warriors_Cat
&@idgg007&@yisu 巨佬的递推式:

AnA_n 为点数为 nn 时的最大边数,则 A1=0,An=An1+n2A_1=0,A_n=A_{n-1}+\left\lfloor\dfrac{n}{2}\right\rfloor

唔,其实我们是可以推出 {An}\{A_n\} 的通项就是 An=n24A_n=\left\lfloor\dfrac{n^2}{4}\right\rfloor 的awa。

证明其实也很简单,用数学归纳法一步就完事啦qwq:

  • n=1n=1 时,A1=0=124A_1=0=\left\lfloor\dfrac{1^2}{4}\right\rfloor,符合。
  • n=kn=k 时有 Ak=k24A_k=\left\lfloor\dfrac{k^2}{4}\right\rfloor,则当 n=k+1n=k+1 时:

Ak+1=Ak+k+12=k24+k+12\begin{aligned} A_{k+1}&=A_k+\left\lfloor\dfrac{k+1} {2}\right\rfloor\\ &=\left\lfloor\dfrac{k^2}{4}\right\rfloor+\left\lfloor\dfrac{k+1} {2}\right\rfloor \end{aligned}

分类讨论一下:当 2k2|k 时,

k24+k+12=k24+k2=k2+2k4=(k+1)214=(k+1)24\begin{aligned} \left\lfloor\dfrac{k^2}{4}\right\rfloor+\left\lfloor\dfrac{k+1} {2}\right\rfloor&=\dfrac{k^2}{4}+\dfrac{k}{2}=\dfrac{k^2+2k}{4}\\ &=\dfrac{(k+1)^2-1}{4}=\left\lfloor\dfrac{(k+1)^2}{4}\right\rfloor \end{aligned}

(用了一下熟知结论:奇数的平方模 4411

2k2\nmid k 时,

k24+k+12=k214+k+12=k2+2k+14=(k+1)24\begin{aligned} \left\lfloor\dfrac{k^2}{4}\right\rfloor+\left\lfloor\dfrac{k+1} {2}\right\rfloor&=\dfrac{k^2-1}{4}+\dfrac{k+1}{2}\\ &=\dfrac{k^2+2k+1}{4}=\left\lfloor\dfrac{(k+1)^2}{4}\right\rfloor \end{aligned}

于是 Ak+1=(k+1)24A_{k+1}=\left\lfloor\dfrac{(k+1)^2}{4}\right\rfloor

由数学归纳法知 nN,An=n24\forall n\in \mathbb N^*,A_n=\left\lfloor\dfrac{n^2}{4}\right\rfloor

所以说这个递推式和图兰定理其实是一样的啦QwQ。