EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

P5377 [THUPC 2019] 鸽鸽的分割

题目描述

牛牛有一块蛋糕,他想把蛋糕分给小朋友们。蛋糕一开始是圆形的,牛牛会在圆周上选择 n 个不重合的点,将这几个点两两用线段连接。这些线段将会把蛋糕分成若干块。

现在,牛牛想知道,蛋糕最多会被分成多少块,请你告诉他答案。

输入格式

输入包含至多 20 行,每行一个整数 n,含义见「题目描述」。保证 0n64

输出格式

依次回答牛牛的每个问题,对于每个问题,输出一行,包含一个整数表示答案。

输入输出样例 #1

输入 #1

1
2
3
2
3
4

输出 #1

1
2
3
2
4
8

说明/提示

样例解释

版权信息

来自 THUPC(THU Programming Contest,清华大学程序设计竞赛)2019。

题解等资源可在 https://github.com/wangyurzee7/THUPC2019 查看。

题解

拓扑学中的欧拉公式描述了凸多面体(convex polyhedron)的顶点(V)、边(E)和面(F)之间的基本关系:

FE+V=2

其中 F 是面数,E 是边数,V 是边的交点数。可用数学归纳法证明这一公式。

本题中:

  • 顶点数 V(n)=n+(n4)

    • n:圆上原本的点的数量。
    • (n4):任意四个点形成的两条线段均会产生一个交点。
  • 边数 E(n)=n+(n2)+2(n4)

    • n:圆上原本的 n 个点将圆分成了 n 条弧。
    • (n2)+2(n4):每两个点之间存在一条线段。每一个交点会将相交的两条线段分成四部分,即增加两条线段。

因此,F(n)=n+(n2)+2(n4)n(n4)+2=2+(n2)+(n4)

注意到平面图包含无限面,而应该计算的是圆内的区域,因此答案为 F(n)1