专栏文章
题解:SP3184 LINES - Game of Lines
SP3184题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miox4m3q
- 此快照首次捕获于
- 2025/12/03 02:35 3 个月前
- 此快照最后确认于
- 2025/12/03 02:35 3 个月前
题意中译中
给定 个点,这几个点两两连线,问其中存在多少条线两两不平行。
思路
两两不平行本质上就是斜率不同,所以只要计算斜率即可。
特别的,如果两个点的横坐标相同,我们可以直接设定其连线的斜率为正无穷(对的,浮点数标准里有正无穷),但是一定要写,否则这个计算结果也可能是负无穷,就会错误。
用
set 统计不同的数目显然非常方便。代码
CPP#include<bits/stdc++.h>
using namespace std;
constexpr int maxn=207;
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
pair<int,int>v[maxn];
set<double>st;
int n;
while(cin>>n)
{
if(n==0)break;
for(int i=1;i<=n;i++)
cin>>v[i].first>>v[i].second;
st.clear();
for(int i=1;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(v[i].first==v[j].first)
st.insert(+INFINITY);
else st.insert((double)(v[i].second-v[j].second)/(v[i].first-v[j].first));
}
}
cout<<st.size()<<'\n';
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...