P8720 [蓝桥杯 2020 省 B2] 平面切分
思路:首先借用dalao的图解释一下,又多出一条与当前平面任意一条直线都不重合线时,多了的平面是交点数+1,所以用双层循环每次往里面加一条直线,计算交点

#include <iostream>
#include <cstring>
#include <set>
using namespace std;
int n;
int a,b;
typedef pair<long double,long double> LD;
set<LD> II;
LD q[1010];
int main()
{
cin>>n;
int ans=-1;
for(int i=0;i<n;i++)
{
cin>>a>>b;
II.insert({a,b});
}
for(auto i=II.begin();i!=II.end();i++)
{
q[++ans]={(*i).first,(*i).second};
}
int res=1;
for(int i=0;i<=ans;i++)
{
set<LD> lll;
for(int j=0;j<=i;j++)
{
long double k1=q[i].first;
long double b1=q[i].second;
long double k2=q[j].first;
long double b2=q[j].second;
if(k1==k2) continue;
long double x=(b2-b1)/(k1-k2);
long double y=k1*x+b1;
lll.insert({x,y})