能灵活用map+set的组合就能过这题了

/*
分成三个步骤来做:
1.通过点两两构造线
by=ax+c,先求a,b,再求c,用gcd(d,b)简化
2.线去重:用map+pair
3.统计交点
*/
#include<bits/stdc++.h>
#include<map>
using namespace std;
#define ll long long
#define maxn 2005
map<pair<int,int>,set<int> > mp;
map<pair<int,int>,set<int> >::iterator it;
struct Node{int x,y;}p[maxn]; int main(){
ll n,ans=,lines=;cin>>n;
for(int i=;i<=n;i++)cin>>p[i].x>>p[i].y;
for(int i=;i<=n;i++)
for(int j=i+;j<=n;j++){
int a=p[i].y-p[j].y,b=p[i].x-p[j].x;
int d=__gcd(a,b);
a/=d,b/=d;
if(a< || a==&&b<){b*=-;a*=-;}
int c=(ll)b*p[i].y-(ll)a*p[i].x;
pair<int,int> p=make_pair(a,b);
if(mp[p].find(c)==mp[p].end()){
++lines;
mp[p].insert(c);
ans+=(ll)lines-mp[p].size();//所有已经存在的线-平行的线
}
}
cout<<ans<<endl;
}

最新文章

  1. 合并两个java bean对象非空属性(泛型)
  2. jQuery Mobile 工具栏
  3. HoloLens开发手记 - Unity之Spatial mapping 空间映射
  4. UVA11584 划分成回文串
  5. linux kill信号列表
  6. kindeditor编辑器
  7. 【JS】Intermediate6:jQuery
  8. AI自动寻路
  9. CF 579A Raising Bacteria
  10. web学习:Spring2.5+Hibernate3.3+Struts1.3整合小例子
  11. partial类修饰符
  12. 查看AIX是32位还是64位,查看内存、cpu等参数
  13. iPhone与iWatch连接、控制、数据传递(Swift)
  14. WPF的消息机制(二)- WPF内部的5个窗口之隐藏消息窗口
  15. 第四篇:Web框架 - Django
  16. java设计模式---三种工厂模式之间的区别
  17. Ubuntu 16.10的root默认密码设置
  18. [JavaScript] 邮箱验证
  19. 针对django2.2报错:UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xa6 in position 9737: ill....
  20. [转] 深入理解React 组件状态(State)

热门文章

  1. 10、 导出python脚本进行数据驱动的接口测试
  2. 创建第一个spirngmvc小项目
  3. 《DSP using MATLAB》Problem 8.45
  4. Android读取logcat信息
  5. Linux下mysql实现远程连接
  6. D3.js的基础部分之数组的处理 集合(Set)(v3版本)
  7. Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南
  8. thinkphp 异常处理
  9. thinkphp for标签
  10. Linux课程---15、域名相关