题目:

这题我WA了3次,那3次是用向量求角度去重算的,不知道错在哪了,不得不换思路。

第4次用斜率去重一次就过了。

注意:n定义成long long,不然求C(3,n)时会溢出。

代码:

#include <bits\stdc++.h>
using namespace std;
typedef long long ll;struct point{int x;int y;
}a[2005];map <long double,int>::iterator it;
int main() {ll n;cin >> n;for(int i = 0; i < n; ++i){cin >> a[i].x >> a[i].y;}int exp = 0; //表示重复的数量for(int i = 0;i < n; ++i){map <long double,int> m;//long double表示斜率,int表示数量,定义在这里是为了清空map。for(int j = i+1;j < n; ++j){long double x = a[i].x-a[j].x;long double y = a[i].y-a[j].y;if(x == 0){m[10000000]++;  //10000000表示斜率不存在}else {m[y/x]++;}}for(it = m.begin();it != m.end(); ++it){if(it->second > 1){exp += it->second*(it->second-1)/2; // 斜率去重 C(2,it-second)。
            }}}cout << n*(n-1)*(n-2)/6 - exp << endl;  // C(3,n)-expreturn 0;
}
//writed by zhangjiuding.

51nod 1451 合法三角形 判斜率去重,时间复杂度O(n^2)相关推荐

  1. 51nod 1451 合法三角形

    由于xy范围比较小,所以可以枚举斜率进行计算. #include<bits/stdc++.h> using namespace std;const int MAXN=2020; const ...

  2. python list去重时间复杂度_List集合去重的一种方法 z

    需要对一个List集合去重,情况是该集合中会出现多个Name属性值相同的,但是其他属性值不同的数据. 在这种情况下,需求要只保留其中一个就好. 我觉得遍历和HashSet都不是我想要的,便采用了一下方 ...

  3. 51nod 2497 数三角形

    小b有一个仅包含非负整数的数组a,她想知道有多少个三元组(i,j,k),满足i<j<k且a[i],a[j],a[k]可能作为某个三角形的三条边的边长. 收起 输入 第一行输入一个正整数n, ...

  4. 51Nod 圆与三角形

    给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). Input 第1行:一个数T,表 ...

  5. 2021-07-08 斜率

    今天为了做一些毒瘤题,学了下斜率,B站视频真的极其良心,下面简单说下我的见解(蒟蒻很菜,勿喷 ) 第一部分:斜率的定义 From 百度百科: 斜率,数学.几何学名词,是表示一条直线(或曲线的切线)关于 ...

  6. 斜率优化详解(超详细, 有图有代码有注释)

    文章目录 斜率优化引入 从例题开始 斜率优化Part 1: 推为斜率式 斜率优化Part 2: 合法点集的斜率单调性 Part 3: 找到最优决策点 Part 4: 斜率优化大流程 Part 5: 斜 ...

  7. 基于三角形重心扫描算法的APIT定位算法

    APIT定位算法的核心内容分两部分: APIT测试(使用面积法判断三角形内点): 设待定位节点为M,要对3个参考节点A,B,C组成的三角形区域△ABC进行APIT测试.对 于节点M,假设在广播消息阶段 ...

  8. 解题报告:luogu P2272 [ZJOI2007]最大半连通子图(tarjan缩点、递推DP、hash、set判重)

    这时yxc上课时讲解的截图. 一般用到tarjan算法的题目步骤都非常相似: tarjan算法 缩点,建图(这里要判重) 按照拓扑序递推(这里缩点以后逆向就已经是拓扑序了)/ 循环遍历新图求解答案. ...

  9. 火眼金睛算法,教你海量短文本场景下去重

    2019独角兽企业重金招聘Python工程师标准>>> 本文由QQ大数据发表 最朴素的做法 在大多数情况下,大量的重复文本一般不会是什么好事情,比如互相抄袭的新闻,群发的垃圾短信,铺 ...

最新文章

  1. android linux应用安装位置,Android中App安装位置详解
  2. Google Map API V3开发(5)
  3. Matlab | Matlab从入门到放弃(11)——基于Matlab的矩阵分解、幂和指数
  4. 返回图片_Vue 图片压缩并上传至服务器
  5. spring是如何管理 事务的
  6. postgresql 不同数据库不同模式下的数据迁移
  7. oracle插补缺失日期,Oracle连接 ORA-28001: 口令已经失效解决方法
  8. Vue组件-Confirm详解
  9. SprinMVC 控制器忽略静态资源
  10. linux vi调至文件尾,linux vi从当前行复制到文件尾的命令?
  11. 用延迟加载解决CNZZ加载慢的问题
  12. Python selenium 延时的几种方法
  13. 孙茂松教授——自然语言处理一瞥:知往鉴今瞻未来
  14. Windows 7软件及游戏的兼容性
  15. Linux安装最新版Mono,Jexus(截至2015年12月30日)
  16. 【锂知道】锂电池基本原理解析:充电及放电机制
  17. Qt5初见笔记(一)使用单个.pro文件创建Hello World工程(参考Sherriff, Nicholas《Learn Qt5》)
  18. shell脚本自动更新ca证书
  19. 用python制作weblogo/SeqLogo/序列保守性分析图
  20. VS2019+WDK10编写xp平台的驱动

热门文章

  1. CSS样式为什么放在head中,而不放在body底部
  2. 橙子云手机华为保修吗_华为云手机引关注!将替代传统手机?华为回应来了
  3. 13种老人不适合带孩子_农村常见却叫上不上名字的13种野生植物,乡下长大的孩子都见过...
  4. (转)RTMP协议从入门到放弃
  5. Python打包之pyinstaller
  6. windows下使用docker(一)—— 安装
  7. ::的类名前有个 ,什么意思?
  8. leetcode - Missing Ranges
  9. 所谓的二维背包Triangular Pastures POJ 1948
  10. Kali下JDK1.8的安装过程