题目描述
一天,小明坐在院子里数星星,Gardon就出了个难题给他,让他数数天上的星星最多有多少个是在同一条直线上的。天上的星星太多了,小明马上就看花了眼,你能写个程序来帮他计算么?

输入
首先输入一个整数N(N<=300),接下来的N对数每对表示一个星星的位置(星星的坐标在-10000到10000之间,精确到小数点后1位)。没有两个星星会在同一个位置。

输出
一个整数,表示一条直线上最多星星的数目。

样例输入
5
0 0
1 0
1 1
0 1
0.5 0.5
样例输出
3

分析与解

我以维特根斯坦的论述方式来分析:

对于斜率,点,以及线段来说:
1.两点确定一条直线,直线具有斜率
2.斜率可以取0到无穷
3.斜率为无穷时说明直线与y轴平行或重合
4.斜率为无穷时说明斜率公式中分母为零
5.斜率为无穷时,其值具有相对性:2−00−0和−1−00−0\frac{2-0}{0-0}和\frac{-1-0}{0-0}0−02−0​和0−0−1−0​
一个是正无穷,一个是负无穷,但是其都是在一条直线上的(y轴)。
6.共线问题建立在三个点的基础之上
7.我们不能通过一般的斜率公式是否相等来断定三个点是否共线
8.可以通过乘式判断3点共线
(y3−y1)(x2−x1)−(y2−y1)(x3−x1)=0(y3−y1)(x2−x1)−(y2−y1)(x3−x1)=0(y3−y1)(x2−x1)−(y2−y1)(x3−x1)=0
9.n个点,每一个点都能和剩下n-1个点组成线段
10.当每个点都不共线时,n个点组成的不同直线的个数最多
11.A点和B点组成线段也意味着B点和A点组成线段
12.n个点组成最多不同直线个数为n∗(n−1)2\frac {n*(n-1)}{2}2n∗(n−1)​

解题思路:
1.确定两个点,找第三个点,看看他们是否共线,如果共线,当前标记数组加一。
2.两个确定点要取到所有不重复情况。
3.两个点,那么一定共线,所以我们只需要找有多少其余的点在那条线上。然后再加上2就是所有在这条线上的点。

代码

#include<iostream>
#include<algorithm>
using namespace std;
struct star{double x;double y;
};
int main(){int n;star s[333];cin>>n;for(int i=0;i<n;++i){cin>>s[i].x>>s[i].y;}int m=0;int b[100860];for(int i=0;i<n;++i){for(int j=i+1;j<n;++j){for(int k=j+1;k<n;++k){if((s[k].y-s[i].y)*(s[k].x-s[j].x)-(s[k].y-s[j].y)*(s[k].x-s[i].x)==0){b[m]+=1;}}m++;}}sort(b,b+m);if(n==1) cout<<1;else if(n<=0) cout<<0;else cout<<b[m-1]+2;
}

(斜率,点和线段)zzuli1196数星星(二)相关推荐

  1. 1196: 数星星(二)(结构体专题)_福利:最新导数6大专题!高分段提分有困扰?听北大状元漫谈提分...

    这是一篇适合数学120分以上的高中生深度研读的随感.文末有福利! 振宇老师从教的十几年中,遇到高分段学生最大的困扰便是:130分以上每提一分便需要付出极大的努力.究其原因,便是思维不够严谨全面,无法拿 ...

  2. zzulioj:1196: 数星星(二)(结构体专题)

    1196: 数星星(二)(结构体专题) 时间限制: 1 Sec 内存限制: 128 MB 提交: 2993 解决: 964 [状态] [讨论版] [提交] [命题人:外部导入] 题目描述 一天,小明坐 ...

  3. 【题集】一维前缀和-二维前缀和-数星星问题-反复运行时如何降低时间复杂度

    目录 1前缀和 1.1一维前缀和 1.2二维前缀和 2.题目 2.1输入描述: 2.2输出描述: 2.3输入 2.4输出 3.题目理解 3.1思路 4.程序 4.1运行结果 1前缀和 1.1一维前缀和 ...

  4. 题解西电OJ (Problem 1008 - 数星星)

    题目内容: Description "不要问我太阳有多高  我会告诉你我有多真  不要问我星星有几颗  我会告诉你很多很多" 一天Qinz和wudired在天上数星星,由于星星可以 ...

  5. [NowCoder] 牛牛数星星

    一闪一闪亮晶晶,满天都是小星星,牛牛晚上闲来无聊,便躺在床上数星星. 牛牛把星星图看成一个平面,左上角为原点(坐标为(1, 1)).现在有n颗星星,他给每颗星星都标上坐标(xi,yi),表示这颗星星在 ...

  6. 用ClickHouse在GitHub上数星星

    在最大的基友交友网站GitHub上,来自世界各地的开源开发者们进行着数百万个项目.这里每天都有大量的代码文档.修复和提交BUG之类的事件信息产生. 而GitHub Archive项目,正是搜集了这些G ...

  7. 按分数段统计学生人数python_用Excel统计各分数段学生数

    用 Excel 统计各分数段学生数 方法一:用 COUNTIF 函数统计 这是最常用.最容易理解的一种方法,我们用它来统计"语文"学科各分数段学生数. 如果某些学科 (如体育) , ...

  8. 空间点过程与随机测度(一):从数星星说起

    (2010-04-13 08:15:00) 转载▼ 标签: 测度 分类: 数学 空间点过程与随机测度(一):从数星星说起 Blog的更新刚刚恢复,就得到大家的鼓励,真是让我感动,谢谢大家了. 数星星的 ...

  9. 2021年12月电子学会图形化三级编程题解析含答案:数星星

    [此题目来自2021年12月份电子学会] [青少年软件编程(图形化)等级考试试卷(三级)] 三.编程题(共3题,共30分) 36:数星星 Goblin有个很厉害的魔法:他一挥手就可以点亮夜空中五彩斑斓 ...

最新文章

  1. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(二)之Introduction to Objects...
  2. LongAdder解析 1
  3. 上海php黑名单,php判断ip黑名单程序代码实例
  4. 五一重装WinXP操作系统所遇问题的解决
  5. acm常见算法及例题
  6. asp listview 单元格文字颜色_如何替换CAD表格中特定区域单元格中的文字?
  7. html5 拖拽滚动条,js 简易版滚动条实例(适用于移动端H5开发)
  8. 如何选择一个合适的大数据可视化工具
  9. uni-app配置代理
  10. javascript 实现自动定时刷新网页脚本
  11. 常见不透明度16进制转换
  12. typo:in word ‘ ‘ 问题解决方法
  13. file_get_contents
  14. Qt进阶--Item Views详解(基础,原创,超级详细)
  15. 屏录录制工具,Gif录制工具
  16. 恐龙灭绝的真正原因是什么?撞击事件和火山喷发
  17. AI时代——人工智能技术图谱,它来啦(机器学习+深度学习学习路线)
  18. tableFooterView中的按钮点击没反应
  19. vue官网学习笔记(九)组件基础
  20. 淘宝网携手富友软件助力时尚行业电子商务营销

热门文章

  1. python爬虫 正则表达式 re.finditer 元字符 贪婪匹配 惰性匹配
  2. 公开说说别人看不到_当听到别人在说自己坏话时,心里是什么感受?
  3. extern “C“解决链接问题
  4. ExecutorService源码解读
  5. mysql数据自定义随机_Mysql 自定义随机字符串
  6. 论述类文本知识框架_高考语文“论述类文本阅读”:三步走,拿满分
  7. 动环监控系统接线图_机房动环监控系统报价
  8. 前端为什么说github很重要_私域流量|为什么说私域流量很重要?
  9. 跨域会报40几_关于跨域,以及跨域的几种方式
  10. qt android程序联网死机,Qt for Android(九) ——APP 崩溃卡死拉起保活实战