洛谷 P5377 [THUPC2019]鸽鸽的分割

Description

洛谷传送门

Solution

手摸一下前几个数,1,2,4,8,16……

嗯,好!稳了!\(2^{n - 1}\),交一发,全 \(WA\)

在推一下 \(n = 6\),等于 \(31\)!!!

于是我重新思考一下。

假设 \(n\) 条线不相交,那么每增加一条线会多一个部分,每两个点组成一条线段,这样的话区域个数为 \(1 + C_n^2\)

但是线段与线段也会相交,每当有两条线段相交就会多出一个区域,每 4 个点组成 2 条线段,组成 1 个交点,所以答案再加上 \(C_n^4\) 即可。

Code

这代码不放也罢。

#include <iostream>
#include <cstdio>

using namespace std;

int n;

int main(){
	while(scanf("%d", &n) != EOF)
		printf("%d\n", 1 + n * (n - 1) / 2 + n * (n - 1) * (n - 2) * (n - 3) / 24);
	return 0;
}

End

posted @ 2021-10-07 21:11  xixike  阅读(47)  评论(0编辑  收藏  举报