careercup-数学与概率 7.6
7.6 在二维平面上,有一些点,请找出经过点数最多的那条线。
解法:
类似于leetcode:Max Points on a Line
我们只需在任意两点之间“画”一条无限长的直线(也即不是线段),并利用散列表追踪哪条直线出现的次数最多。这种做法的时间复杂度O(n^2),因为一共有n^2条线段。
通过将每一个点与除了自己之外的每一点求斜率(要注意相等和斜率不存在的情况),使用unorder_map中来插入k值,并对相同的k值进行累加,累加一次相当于增加该直线上的一个点。主要思想就是一条直线上的任意一点与其他点求得的k值都相等,因此,可以利用任意一点与其他每个点求斜率来计算求得的斜率上点的数量。
C++实现代码:
#include<iostream>
#include<unordered_map>
#include<vector>
#include<climits>
using namespace std; struct Point
{
int x;
int y;
Point():x(),y(){}
Point(int a,int b):x(a),y(b){}
}; int maxPoints(vector<Point> &points)
{
if(points.empty())
return ;
int n=points.size();
int i,j;
int maxnum=;
unordered_map<double,int> mp;
for(i=;i<n;i++)
{
int duplicate=;
mp[INT_MAX]=;
mp.clear();
for(j=;j<n;j++)
{
if(i==j)
continue;
if(points[i].x==points[j].x&&points[i].y==points[j].y)
{
duplicate++;
continue;
}
double k=(points[i].x==points[j].x?INT_MAX:(double)(points[i].y-points[j].y)/(points[i].x-points[j].x));
mp[k]++;
}
auto mp_iter=mp.begin();
while(mp_iter!=mp.end())
{
if(mp_iter->second+duplicate>maxnum)
maxnum=mp_iter->second+duplicate;
mp_iter++;
}
}
return maxnum;
} int main()
{
vector<Point> vec={Point(,),Point(,),Point(,),Point(,),Point(,),Point(,)};
cout<<maxPoints(vec)<<endl;
}
careercup-数学与概率 7.6的更多相关文章
- 程序员的数学 三册数学,概率统计、线性代数pdf
程序员的数学1 2012.pdf 2012版 程序员的数学2 概率统计 ,平冈和幸,(日)堀玄著 ,P4006 2015.pdf 2015版 程序员的数学3-线性代数 2016.pdf 2016版 如 ...
- UVa 11427 Expect the Expected (数学期望 + 概率DP)
题意:某个人每天晚上都玩游戏,如果第一次就䊨了就高兴的去睡觉了,否则就继续直到赢的局数的比例严格大于 p,并且他每局获胜的概率也是 p,但是你最玩 n 局,但是如果比例一直超不过 p 的话,你将不高兴 ...
- 面试题目——《CC150》数学与概率
面试题7.2:三角形的三个顶点上各有一只蚂蚁.如果蚂蚁开始沿着三角形的边爬行,两只或三只蚂蚁撞到一起的概率有多大?假定每只蚂蚁会随机选一个方向,每个方向被选到的几率相等,而且三只蚂蚁的爬行速度相同. ...
- HDU 4438 Hunters (数学,概率计算)
题意:猎人A和B要进行一场比赛.现在有两个猎物老虎和狼,打死老虎可以得X分,打死狼可以得Y分.现在有两种情况: (1)如果A与B的预定目标不同,那么他们都将猎到预定的目标. (2)如果A与B的预定目标 ...
- 数学(概率):HNOI2013 游走
[题目描述] 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这 ...
- ZOJ3640Help Me Escape(师傅逃亡系列•一)(数学期望||概率DP)
Background If thou doest well, shalt thou not be accepted? and if thou doest not well, sin lieth at ...
- POJ3682King Arthur's Birthday Celebration(数学期望||概率DP)
King Arthur is an narcissist who intends to spare no coins to celebrate his coming K-th birthday. Th ...
- 【NOIP模拟赛】书 数学+期望概率
biubiu~~~ 对于这道傻题.........我考场上退了一个多小时才推出来这个东西是排列...........然后我打的dfs效率n!logInf正好n=9是最后一个能过的数结果前三个点的n全是 ...
- HDU 5810 Balls and Boxes ——(数学,概率,方差)
官方题解看不太懂,参考了一些人的博客以后自己证明如下: 其中D(X)和E(X)的公式如下(参考自百度百科): 其中 p = 1 / m .(这是每一个单独事件发生的概率期望,在这里单独事件指的是一个球 ...
- 数学(概率)CodeForces 626D:Jerry's Protest
Andrew and Jerry are playing a game with Harry as the scorekeeper. The game consists of three rounds ...
随机推荐
- USB (Universal Serial Bus)
USB歷史簡介 USB規格演變 標準 USB 2.0 介面 實體層 訊號傳輸 傳輸速率 網路層 USB 通訊模型 Endpoints 傳輸型態 USB 資料連結 Transaction Frame P ...
- ThinkPHP3.2.3验证码显示、刷新、校验
显示验证码 首先在Home/Controller下创建一个公共控制器PublicController <?php namespace Home\Controller; use Think\Con ...
- 165. Compare Version Numbers
题目: Compare two version numbers version1 and version2.If version1 > version2 return 1, if version ...
- platform_driver与file_operations两种方法开发led驱动
下面是两个LED灯的驱动程序 一个用platform_driver 另一个用file_operations #include <linux/kernel.h> #include <l ...
- ActionBar官方教程(4)给ActionBar添加操作项及它们的事件处理
Adding Action Items The action bar provides users access to the most important action items relating ...
- 解决在IE里预览时弹出:为了有利于保护安全性......
用Dreamweaver做网页,在IE里预览时弹出这个:为了有利于保护安全性,Internet Explorer 已限制此网页运行可以访问计算机的脚本或ActiveX控件. 在页面顶部加段代码就可以了 ...
- Hibernate一级缓存、二级缓存
缓存就是把以前从数据库中查询出来和使用过的对象保存在内存中,准确说就是一个数据结构中,这个数据结构通常是或类似HashMap,当以后要使用某个对象时,先查询缓存中是否有这个对象,如果有则使用缓存中的对 ...
- 在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像
发布于 2014-12-11 作者 陈阳 FreeBSD 基础镜像现已登陆中国的 VM Depot! 对于青睐 BSD 而非 Linux 的开源爱好者来说,这无疑是个好消息.同时,随着该基础镜像 ...
- SharePoint : 使用SPQuery对象时要注意的事项
转:http://www.cnblogs.com/chenxizhang/archive/2009/10/23/1588415.html 我们经常需要对一个列表进行查询,此时最灵活的方式就是直接使用S ...
- 谈谈分布式事务之三: System.Transactions事务详解[下篇]
在前面一篇给出的Transaction的定义中,信息的读者应该看到了一个叫做DepedentClone的方法.该方法对用于创建基于现有Transaction对 象的“依赖事务(DependentTra ...