平面分割

代码一行,解析一箱~~
解析
计f[i]:从1到i累加之和
先假设最好情况,p=2;
此时第一条会增加1个
第二条与第一条相交,再加2个
第三条与前2条相交,再加3个
…
故n条时共增加f[n]个,共f[n]+1个
而p>=3时
第三条本应与前两条分别相交,而只交了一个,少交了一个
第4条本应与前3条分别相交,而只交了一个,少交了2个
…
故p条相交,共少交f[p-2]个
则最终答案为f[n]+1-f[p-2]
代码
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<climits>
using namespace std;
const int M=INT_MAX;
long long f[550]={ };
void solve(int n){
for(int i=1;i<=n;i++){
f[i] = f[i-1] + i;
}
return;
}
int main(){
int n,p;
scanf("%d%d",&n,&p);
solve(n);
printf("%lld",f[n]-f[p-2]+1);
return 0;
}
本文介绍了一种关于平面分割的问题求解方法,通过数学公式计算在不同条件下的平面分割数量,并提供了一段C++代码实现。文章详细解释了如何根据线条的数量和相交情况来计算新增的分割区域数。
737

被折叠的 条评论
为什么被折叠?



