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

链接:

洛谷

题目大意:

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

正文:

一遇到点面线就考虑欧拉公式 FE+V=2F=2+EV

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

因此答案 F=2n(n4)+n+(n2)+2(n4)=2+(n4)+(n2),还要减去圆外的一个面,所以 F=1+(n4)+(n2)

代码:

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 @   Jayun  阅读(61)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示