洛谷 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;
}