平面切分(平面直线)
问题描述】
平面上有 N 条直线,其中第 i 条直线是 y = Ai · x + Bi。
【输入格式】
第一行包含一个整数 N。
以下 N 行,每行包含两个整数 Ai; Bi。
【输出格式】
一个整数代表答案。
【样例输入】
3
1 1
2 2
3 3
1
2
3
4
【样例输出】
6
1
【评测用例规模与约定】
对于 50% 的评测用例, 1 ≤ N ≤ 4, −10 ≤ Ai; Bi ≤ 10。
对于所有评测用例, 1 ≤ N ≤ 1000, −100000 ≤ Ai; Bi ≤ 100000。
【答案提交】
请计算这些直线将平面分成了几个部分。
先去重,然后按照顺序每新增一个,新增的部分的个数=这一条线与前面的的线的交点个数+1,时间复杂度O(n^2long(n))
#include<iostream>
#include<cstring>
#include<set>
using namespace std;
set<pair<long double,long double> > se;//交点
const int N = 1005;
long double A[N];
long double B[N];
set<pair<long double,long double> > s;//所有不重复的直线
set<pair<long double,long double> >::iterator it;
int main()
{int n,i,j,x,y;cin>>n;for(i=0;i<n;i++){cin>>x>>y;s.insert(make_pair(x,y));//去掉重复的直线 }n = s.size();for(i=0,it=s.begin();it!=s.end();it++,i++){A[i]=(*it).first;B[i]=(*it).second;}long long ans=2;set<pair<long double,long double> > se;for(i=1;i<n;i++){for(j=i-1;j>=0;j--){//先判断是否平行,因为之前已经去重,所以直接判断斜率是否相等就行 if(A[i]==A[j])continue;long double x=(B[j]-B[i])/(A[i]-A[j]);long double y=(A[j]*B[i]-A[i]*B[j])/(A[j]-A[i]);se.insert(make_pair(x,y));}int n2=se.size();ans+=(n2+1);se.clear();}cout<<ans<<endl;
}
转载于这里
平面切分(平面直线)相关推荐
- python 求平面两点距离_Python求平面内点到直线距离的实现
近期遇到个问题,需要计算平面内点到直线的距离,发现数学知识都还给老师了,度娘后找到计算方法,特此记录. 点到直线的计算公式: 通过公式推导,得到信息: A:直线斜率 B:固定值-1 C:直线截距b 转 ...
- 空间平面相交的直线的计算及其源码
目的:在写图形学项目中,常常遇到三维平面相交的情况.它也是图形学的基础 空间平面和直线一样,主要两种表达方式. 1)通用的代数表达方式: ax+by+cz+d=0ax+by+cz+d=0ax+by+c ...
- PCL点云处理之平面内两直线求交点(五十)
PCL点云处理之平面内两直线求交点(五十) 一.两点求直线 二.两直线求交点 二.代码 一.两点求直线 设两个点为 (x1, y1) , (x2, y2),则有: A = y2 - y1 B = x1 ...
- 高中数学必修2:平面解析几何之直线与圆、圆与圆的位置关系
今天分享关于高中数学必修2平面解析几何中的直线与圆.圆与圆的位置关系 知识点,分别从三个方面讲解,用5个经典习题进行解答全过程. 1.直线与圆的位置关系 2.圆与圆的位置关系 2.求圆的弦长的常用方法 ...
- LeetCode149. 直线上最多的点数: 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o ±------- ...
- 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。
需求:给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 分析思路: 1.将所有点二维坐标化,即定义出所有点的x,y坐标值 2.遍历出所有取出两点的情况(不考虑先后顺序),根据任意 ...
- 第十一届蓝桥杯C/C++ 试题I 平面切分
水了个省一,写个题解 解题思路: 在同一个平面内,如果添加的每一条直线互不相交,则每添加一条直线,就会增加一个平面:当添加一条直线时,这条直线与当前平面内已有直线每产生一个不同位置的交点时,这条直线对 ...
- python计算点到直线的距离_Python求平面内点到直线距离的实现
近期遇到个问题,需要计算平面内点到直线的距离,发现数学知识都还给老师了,度娘后找到计算方法,特此记录. 点到直线的计算公式: 通过公式推导,得到信息: a:直线斜率 b:固定值-1 c:直线截距b 转 ...
- 如何判断两个平面相交_数学提高平面与平面垂直的判定方法是什么
一般地,两个平面相交,如果它们所成的二面角是直二面角,就说这两个平面互相垂直.一个平面过另一个平面的垂线,则这两个平面垂直. 平面与平面垂直的判定方法 1.定义法:如果两个平面所成的二面角为90°,那 ...
- 计算平面与平面的交线(附c++实现)
计算平面与平面的交线 理论基础: 公式推导: 程序实现: 结果验证: 理论基础: 空间中的直线可由一点坐标和一方向向量来表示,在计算两平面的交线时,可先由两平面法向量的叉乘来得到交线方向向量,再求取直 ...
最新文章
- [转]NS2添加多接口
- awk分析nginx日志里面的接口响应时间
- php+mysql实现数据分批插入
- lambdas for_Java 8发布了! — Lambdas教程
- hive 导入hdfs数据_将数据加载或导入运行在基于HDFS的数据湖之上的Hive表中的另一种方法。
- ASP.NET 常见参考项目的 UI、BLL 、Model 、 DAL 分析
- oracle不弹出另存为,Oracle另存为~
- Oracle生成流水号函数
- SPI 机制-插件化扩展功能
- 【Codeforces 1114C】Trailing Loves (or L'oeufs?)
- Java实现人力资源管理系统
- 如何查询Windows XP 系统是多少位的
- html input文字缩进,使用HTML Tidy来缩进HTML代码?
- 徐思201771010132《面向对象程序设计(java)》第一周学习总结
- 2022年中式烹调师(初级)考试题库及在线模拟考试
- 台式计算机硬盘的尺寸通常为多少英寸,电脑硬件参数之硬盘
- idea中数据库可视化
- android native 代码内存泄露 定位方案
- 爬虫 抖音用户页 所有无水印视频 批量下载 最新 (2021-3-18 可用--失效我会更新)
- Excel模板数据填充导出