直线、折线分割平面及平面分割空间问题

直线分割平面问题:

1、公式:a[i]=a[i-1]+(i-2),b[i]=b[i-1]+2,f[i]=a[i]+b[i];//a[i]为分割之后的内部,b[i]为分割之后的外部,f为直线分割平面的数量。

2、注解:对于第n条直线:

内部:每次直线最多于之前的n-1条直线相交产生n-1个交点->n-2个新块

外部:每次最多将两个块一分为二

折线分割平面问题:

1、公式:a[i]=a[i-1]+(i-2),b[i]=b[i-1]+2,f[i]=a[2x]+b[2x]-2x;//a和b同直线,f为折线分割平面的数量。

2、注解:同直线分割平面问题,折线就相当于两个直线减去两个新块

#include <bits/stdc++.h>
#define  LL long long

using namespace std;

LL a[20100],b[20100],c[10100];

int main()
{
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
  a[1]=0,b[1]=2;c[1]=2;
  for(int i=2;i<=20000;i++)
  {
      a[i]=a[i-1]+(i-2);
      b[i]=b[i-1]+2;
  }
  for(int i=2;i<=10000;i++)
  {
      c[i]=a[2*i]+b[2*i]-2*i;
  }
   int t;
   cin>>t;
   while(t--)
   {
       int n;
       cin>>n;
       cout<<c[n]<<"\n";
   }
    return 0;
}

平面分割空间

1、公式:g[i]=g[i-1]+i,f[i]=f[i-1]+g[i-1];

2、注解:n-1个平面->f[n-1]

要想最多,那么第n个平面与前n-1个平面相交且交线不重合->产生n-1条交线

n-1个交线会将第n个平面分成g[i-1]个区域,->将原有的空间一份为二

#include <bits/stdc++.h>
#define LL long long int

using namespace std;

LL a[1010],b[1010];

int main()
{
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    a[1]=2;
    b[1]=2;
    for(int i=2;i<=1000;i++)
    {
       b[i]=a[i-1]+b[i-1]; 
       a[i]=a[i-1]+i;
    }
    int n;
    while(cin>>n)
    {
        if(n==0) break;
        cout<<b[n]<<"\n";
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值