小学时期的小L发现自己很有艺术细胞,于是买了一块画板,但是他的绘画水平使得他只能连接两点画出一条线段。有一天他决定在一张有n个点的图上作画,即他可以把这n个点任意连接。大家认为平行线是非常不美观的,于是他想知道自己最多能画多少条直线使整张画不出现平行线。
输入
第一行输入一个整数n (1 <= n <= 200)
接下来n行每行两个整数代表每个点的坐标x, y  (-1000 <= x, y <= 1000)
输出
一行一个整数为能画出最多的两两不平行的直线条数
样例输入 Copy
4
-1 1
-2 0
0 0
1 1
样例输出 Copy
4
关于平行线的题目以前做过,但是没想起来
求平行线的方法:用一个map存储当前两个点的“斜率”(只需要存储x和y的差值),然后取反在存一次(因为x,y和-x,-y不相等但是平行,所以我们要存两遍, )然后遍历map的每一个斜率可以根据a*(a-1)/2来计算相等的个数,然后在累加,最后再除以2(别忘了我们斜率存了两次)
本题目题解:本题中我们要先求平乡线,但我们只要保存相同斜率的个数,(不用取反,就存一次),然后斜率相同的我们只要1个也就是总个数减去某个斜率的总数,然后加1就行了
#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
pair<int ,int>p;
vector<pair<int,int> >ve;
map<pair<int ,int >,int>mp;//保存斜率与斜率出现的次数
map<ll,int >mp1;
map<pair<int ,int >,int>::iterator it;
int main(){
int n;
int sum=;
cin>>n;
for(int i=;i<n;i++){
cin>>p.first>>p.second;
ve.push_back(p);//用vector保存给的数据
}
int x1,a,b,x2;
for(int i=;i<n;i++){
for(int j=i+;j<n;j++){
a=ve[i].second-ve[j].second;
b=ve[i].first-ve[j].first;
x1=__gcd(a,b);
a=a/x1;
b=b/x1;
p.first=b;
p.second=a;
mp[p]++;
// p.first=-b;
// p.second=-a;
// mp[p]++;
}
}
int ans=;
int s=n*(n-)/;
for(it=mp.begin();it!=mp.end();it++){
s=s-it->second+;
}
cout<<s<<endl;
return ;
}

最新文章

  1. Spring MVC视图解析器
  2. Effective c++
  3. UWP开发笔记——嵌套式页面的实现
  4. iOS--页面间的代理传值(属性、代理(委托)、代码块、单例、通知)
  5. 史上最用心的iOS App上架流程【转】
  6. ALV详解:OO ALV
  7. iOS另类的内存管理
  8. Data.gov.uk电子政务云,牛津大学NIE金融大数据实验室王宁:数据治理的现状和实践
  9. netty Getting Started--reference
  10. wdlinux mysql innodb的安装
  11. Install RHadoop with Hadoop 2.2 – Red Hat Linux
  12. GET方式,获取服务器文件
  13. 简单封装常用js方法
  14. 如何调用layer.open打开的的iframe窗口中的JS
  15. Codeforces Round #419 Div. 1
  16. The processing instruction target matching &amp;quot;[xX][mM][lL]&amp;quot; is not allowed.
  17. VMware安装步骤既常见问题
  18. npm install 报错Unexpected end of JSON input while parsing near...
  19. Java char
  20. 概率dp(A - Scout YYF I POJ - 3744 )

热门文章

  1. sql-lib闯关51-60
  2. sql-lib闯关1-10关
  3. 运行docker大致流程
  4. Linux下段错误(C语言)
  5. 以个人身份加入.NET基金会
  6. vue+cordova实现退出app效果
  7. ShardingJDBC的基本配置和使用
  8. 如何理解EventLoop--浏览器篇
  9. 001_Chrome 76支持原生HTML 图片懒加载Lazy loading
  10. Ptask