算法题每日一练---第66天:平面切分

简介: 平面上有 N 条直线,其中第 i 条直线是 y=Ai⋅x+Bi。

2.png

一、问题描述


平面上有 N 条直线,其中第 i 条直线是 y=Ai⋅x+Bi

请计算这些直线将平面分成了几个部分。


题目链接:平面切分


二、题目要求


样例

输入:
    3
    1 1
    2 2
    3 3
输出:
    6


考察

数学思想
建议用时20~35min


三、问题分析


假如问题改成:任意n条直线,最多可以将平面分成多少块区域?

40.png

如上图所示,直线对应的区域数量如下所示:

1             1
2             4
3             7
4             11
5             16
6             22
7             29
......
n             n*(n+1)/2+1

第n条直线区域数目=第n-1条直线区域数目+不同交点数目+1

任意n条直线,最多可以将平面分成 n*(n+1)/2+1块区域。

那么题目给定直线,面对不同的情况如何判断?

直线平行,区域=n+1
直线重合,区域=n+0
直线相交,区域=不同交点数目+1


四、编码实现


#include<iostream>#include<algorithm>#include<math.h>#include<set>usingnamespacestd;
typedefpair<double,double>line;
typedeflonglongll;
set<line>l;
intcheck(doublea1,doubleb1)
{
set<line>p;
doublea3,b3;
for(set<line>::iteratorit=l.begin();it!=l.end();it++)//取出已存在的优点    {
doublea2=it->first;
doubleb2=it->second;
if(a2!=a1)//不平行        {
a3=(b1-b2)/(a2-a1);
b3=a1*a3+b1;
p.insert({a3,b3});//交点插入,判重        }
    }
returnp.size();//返回大小}
intmain()
{
lli,n,ans=1;//初始化数据cin>>n;//输入直线数量doublex,y;//直线坐标for(i=1;i<=n;i++)
    {
cin>>x>>y;//输入if(!l.count({x,y}))//不是重复的直线        {
l.insert({x,y});//插入set判重ans+=check(x,y)+1;//求交点        }               
    }
cout<<ans;//返回结果return0;
}


五、总结与提高


1.折线

f(n)=f(n-1)+4*(n-1)+1

f(n)=2∗n2−n+12*n^2-n+12n2n+1


2.三角形

f(n)=f(n-1)+6*(n-1)+1

f(n)=3∗n∗(n−1)+2f(n)=3*n*(n-1)+2f(n)=3n(n1)+2


3.圆形

f(n)=f(n-1)+2*(n-1)

f(n)=n2−n+2f(n)=n^2-n+2f(n)=n2n+2


4.平面分割空间

f(n)=(n3+5∗n)/6+1(n^3+5*n)/6+1(n3+5n)/6+1

相关文章
|
6天前
|
算法 数据建模
平面中判断点在三角形内算法(重心法)
平面中判断点在三角形内算法(重心法)
12 0
|
6天前
|
算法
平面中判断点在三角形内算法(同向法)
平面中判断点在三角形内算法(同向法)
|
3月前
|
算法 机器人 Python
Python实现教程:平面最短路径算法
Python实现教程:平面最短路径算法
54 1
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于DCT变换和位平面分解的数字水印嵌入提取算法matlab仿真
这是一个关于数字水印算法的摘要:使用MATLAB2022a实现,结合DCT和位平面分解技术。算法先通过DCT变换将图像转至频域,随后利用位平面分解嵌入水印,确保在图像处理后仍能提取。核心程序包括水印嵌入和提取,以及性能分析部分,通过PSNR和NC指标评估水印在不同噪声条件下的鲁棒性。
|
9月前
|
存储 人工智能 算法
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
62 0
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
|
8月前
|
算法
3D Hough变换点云平面检测算法
3D Hough变换点云平面检测算法
140 0
|
8月前
|
算法 C++ 芯片
RANSAC算法拟合平面实现(附代码c++)
RANSAC算法拟合平面实现(附代码c++)
305 0
|
机器学习/深度学习 数据采集 存储
基于深度学习LSTM的古代汉语切分标注算法及语料库研究(下)
基于深度学习LSTM的古代汉语切分标注算法及语料库研究(下)
764 0
基于深度学习LSTM的古代汉语切分标注算法及语料库研究(下)
|
机器学习/深度学习 传感器 人工智能
基于深度学习LSTM的古代汉语切分标注算法及语料库研究(上)
基于深度学习LSTM的古代汉语切分标注算法及语料库研究
25884 0
基于深度学习LSTM的古代汉语切分标注算法及语料库研究(上)
|
自然语言处理 算法 Java
自然语言处理hanlp------5切分算法
自然语言处理hanlp------5切分算法
自然语言处理hanlp------5切分算法

热门文章

最新文章