【Luogu P5377】[THUPC2019]鸽鸽的分割

链接:

洛谷

题目大意:

在圆上选择 \(n\) 个点互相连接,问最多能分出多少面。

正文:

一遇到点面线就考虑欧拉公式 \(F-E+V=2\Rightarrow F=2+E-V\)

在本题中,点数为原本的点和线段之间的交点 \(V=n+\dbinom{n}{4}\);边数就是弧、原本点之间相连的边和每个交点带来的两个贡献 \(E=n+\dbinom{n}{2}+2\dbinom{n}{4}\)

因此答案 \(F=2-n-\dbinom{n}{4}+n+\dbinom{n}{2}+2\dbinom{n}{4}=2+\dbinom{n}{4}+\dbinom{n}{2}\),还要减去圆外的一个面,所以 \(F=1+\dbinom{n}{4}+\dbinom{n}{2}\)

代码:

int n;

int main()
{
	while (scanf ("%d", &n) != EOF)
	{
		int cn2 = n * (n - 1) / 2,
			cn4 = n * (n - 1) * (n - 2) * (n - 3) / 24;
		printf ("%d\n", cn2 + cn4 + 1);
	}
    return 0;
}
posted @ 2021-11-16 13:14  Jayun  阅读(60)  评论(0编辑  收藏  举报