CC37:穿点最多的直线】的更多相关文章

题目 在二维平面上,有一些点,请找出经过点数最多的那条线. 给定一个点集vectorp和点集的大小n,没有两个点的横坐标相等的情况,请返回一个vector,代表经过点数最多的那条直线的斜率和截距. 解法 自己的想法是两个点计算斜率与截距,然后另写个函数判断剩下的点到这条直线的距离.但是仔细想想复杂度还是太高了,所以采用map存储的方式: /* struct Point { int x; int y; Point() : x(0), y(0) { } Point(int xx, int yy) {…
穿点最多的直线 牛客网 程序员面试金典 C++ 题目描述 在二维平面上,有一些点,请找出经过点数最多的那条线. 给定一个点集vectorp和点集的大小n,没有两个点的横坐标相等的情况,请返回一个vector,代表经过点数最多的那条直线的斜率和截距. C++ /* struct Point { int x; int y; Point() : x(0), y(0) { } Point(int xx, int yy) { x = xx; y = yy; } };*/ class DenseLine {…
直接两个点确定一条直线.然后两两组合,再写一个看过多少个点的函数.一直更新max就行. import java.util.Arrays; public class Solution { public static void main(String[] args){ Point[] a = {new Point(0,0),new Point(1,1),new Point(2,2),new Point(0,3)}; System.out.println(Arrays.toString(getLine…
第18章---高度难题 1,-------另类加法.实现加法. 另类加法 参与人数:327时间限制:3秒空间限制:32768K 算法知识视频讲解 题目描述 请编写一个函数,将两个数字相加.不得使用+或其他算数运算符. 给定两个int A和B.请返回A+B的值 测试样例: 1,2 返回:3 答案和思路:xor是相加不进位.and得到每一个地方的进位.所以,用and<<1之后去与xor异或.不断递归. import java.util.*; public class UnusualAdd { pu…
题目链接 Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. 分析:首先要注意的是,输入数组中可能有重复的点.由于两点确定一条直线,一个很直观的解法是计算每两个点形成的直线,然后把相同的直线合并,最后包含点最多的直线上点的个数就是本题的解.我们知道表示一条直线可以用斜率和y截距两个浮点数(垂直于x轴的直线斜率为无穷大,截距用x截距),同时还需要保存每…
如果,没有紫书上的翻译的话,我觉得我可能读不懂这道题.=_=|| 题意: 平面上有n个点,不是白点就是黑点.现在要放一条直线,使得直线一侧的白点与另一侧的黑点加起来数目最多.直线上的点可以看作位于直线的任意一侧. 分析: 首先假设直线经过两个点,否则可以移动直线使其经过两个点,并且总数不会减少. 所以,我们可以先枚举一个基点,然后以这个点为中心. 围绕基点将其他点按照极角排序,将直线旋转,统计符合要求的点的个数. 小技巧: 如果将所有的黑点以基点为中心做一个中心对称,则符合要求的点的个数就变成了…
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. 思路:对于某一点来说,在经过该点的直线中选取节点数量最多的直线:对于全局来说,必定是某个局部点满足条件的直线之一=>局部最优解也是全局最优解=>贪心法. /** * Definition for a point. * struct Point { * int x; * int y; * Point…
题面 这道题的意思就是给出若干个一次函数,当\(x=x_0\)时,最大的\(y\)为多少 这种题可以用李超线段树来处理 什么是李超线段树呢? 李超线段树存储的是在区间上方暴露最多的直线标号,为了便于描述,我们称它为优势直线 例如下图 在区间[0,5],AB就是暴露最多的线段 可以证明,当\(x=x_0\)时最大的\(y\),一定属于所有包含\(x_0\)的区间的优势直线 那么我们怎么存储呢? 对于区间[l,r],如果没有优势直线,那么直接把当前直线改为它的优势直线 如果有优势直线,如果当前直线完…
题目链接: http://poj.org/problem?id=1118 题意: 给定n个点, 求在同一直线上的点最多的直线上点的数目. 解法: 简单题目, 规模比较小,  暴力搜索. #include <iostream> using namespace std; #define MAXN 700 struct Point{ int x,y; }p[MAXN]; int main(){ int N; cin>>N; while(N){ int i,j,k; ;i<N;++i…
java8中谨慎使用实数作为HashMap的key! java8中一个hashCode()函数引发的血案java8中一个hashCode()函数引发的血案1.起因2.实数的hashCode()3.总结1.起因让我关注到这一点的起因是一道题:牛客网上的max-points-on-a-line (如果链接打不开可以直接搜索题目哦) 题目是这么描述的: Given n points on a 2D plane, find the maximum number of points that lie on…
第三弾が始まる! codechef problems 第三弹 一.Motorbike Racing 题面 It's time for the annual exciting Motorbike Race in Byteland. There are N motorcyclists taking part in the competition. Johnny is watching the race. At the present moment (time 0), Johnny has taken…
题目 最多有多少个点在一条直线上 给出二维平面上的n个点,求最多有多少点在同一条直线上. 样例 给出4个点:(1, 2), (3, 6), (0, 0), (1, 3). 一条直线上的点最多有3个. 解题 直接暴力求解有问题,时间复杂度O(N3),对其中的相同点没有处理,斜率为0,不存在也没有处理,找出运行不对 看到通过定义一个HashMap存储直线的斜率,存在相同的情况就+ 1 ,最后找到斜率个数最长的那个. 下面程序中已经有很多注释了. /** * Definition for a poin…
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. Example 1: Input: [[1,1],[2,2],[3,3]] Output: 3 Explanation: ^ | |        o |     o |  o   +-------------> 0  1  2  3 4 Example 2: Input: [[1,1],[3,2]…
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o +-------------> 0 1 2 3 4 示例 2: 输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]] 输出: 4 解释: ^ | | o | o o | o | o o +-------------------> 0 1 2 3 4 5 6 #include<b…
3974: Region  Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 33            Accepted:8 Description In geometry, lines and circles are both very charming shapes, with a lot of interesting properties. We know a line divid…
给定二维平面上有 n 个点,求最多有多少点在同一条直线上. 详见:https://leetcode.com/problems/max-points-on-a-line/description/ Java实现: /** * Definition for a point. * class Point { * int x; * int y; * Point() { x = 0; y = 0; } * Point(int a, int b) { x = a; y = b; } * } */ class…
直线上最多的点数 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | |        o |     o |  o +-------------> 0  1  2  3 4 示例 2: 输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]] 输出: 4 解释: ^ | | o |     o   o |      o |  o   o +-----------…
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | |        o |     o |  o   +-------------> 0  1  2  3 4 示例 2: 输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]] 输出: 4 解释: ^ | | o |     o   o |      o |  o   o +------------------…
149. 直线上最多的点数 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o +-------------> 0 1 2 3 4 示例 2: 输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]] 输出: 4 解释: ^ | | o | o o | o | o o +-------------------> 0 1 2 3 4 5 6…
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. /** * Definition for a point. * struct Point { * int x; * int y; * Point() : x(0), y(0) {} * Point(int a, int b) : x(a), y(b) {} * }; */ class Solutio…
#include <iostream>using namespace std;int main(){int i,n;while(cin>>n){if(n==0||n==1) cout<<0;if(n==2) cout<<"0 1";if(n==3) cout<<"0 2 3";if(n>3){cout<<"0 "<<n-1<<" &qu…
/** * Definition for a point. * struct Point { * int x; * int y; * Point() : x(0), y(0) {} * Point(int a, int b) : x(a), y(b) {} * }; */ class Solution { public: /** * @param points an array of point * @return an integer */ int maxPoints(vector<Point…
http://poj.org/problem?id=1118 直接枚举O(n^3) 1500ms能过...数据太水了...这个代码就不贴了... 斜率排序O(n^2logn)是更好的做法...枚举斜率...直线方程相同的线段数量k...一定满足方程 n(n-1)/2=k  ---------------  还真是baka. 到2点才想出这个结论 特判只有一个点,两个点的情况...500ms AC /********************* Template ******************…
7.6 Given a two-dimensional graph with points on it, find a line which passes the most number of points. 这道题给了我们许多点,让我们求经过最多点的一条直线.给之前那道7.5 A Line Cut Two Squares in Half 平均分割两个正方形的直线一样,都需要自己写出点类和直线类.在直线类中,我用我们用斜率和截距来表示直线,为了应对斜率不存在情况,我们还需用一个flag来标记是否…
计算直线的交点数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8234    Accepted Submission(s): 3705 Problem Description 平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数.比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行).   Input 输入数据包含多…
将n 条直线排成一个序列,直线2和直线1最多只有一个交点,直线3和直线1,2最多有两个交点,......,直线n 和其他n-1条直线最多有n-1个交点.由此得出n条直线互不平行且无三线共点的最多交点数: Max = 1 +2 +....(n-1)=n(n-1)/2; 但本题不这么简单,这些直线有多少种不同的交点数?   容易列举出i=1,2,3的情况如下图所示,来分析n=4的情况: 1.       四条直线全部平行,无交点 2.       其中三条平行,交点数: (n-1)*1 +0=3:…
题意:平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数.比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行). 思路:动态规划,想办法记忆化搜索,当前状态和之前状态结合起来 dp[i][j] i是有i条直线 j代表交点个数 假设有n条直线,前n-1条直线的所有交点都知道 假设第n条线段与前n-1条平行 n条平行    交点数   0 假设第n条线段与前n-2条平行 n-1条平行 交点数   1*(n-1) (剩下那一条与n-1的平行线都有一个交点但是那两条直线有dp[1]…
题意: 平面上有n条线段,一次给出这n条线段的两个端点的坐标.问怪兽能否从坐标原点逃到无穷远处.(两直线最多有一个交点,且没有三线共交点的情况) 分析: 首先说明一下线段的规范相交:就是交点唯一而且在两条线段的内部. 如果输入中有一条线段uv没有和其他任何一条线段规范相交,那么怪兽一定是可以从u走到v的. 所以我们可以建一个图模型,如果u可以走到v则添加一条边,最后BFS一下看能否从起点走到终点. 再考虑下特殊情况: 题中虽然说三线不会共交点,但貌似不包括三线共端点的情况. 比如这种情况: 线段…
题意: 平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数. 比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行). 分析: DP 设状态:f[i][j]表示i条直线能否产生j个交点. 有不同的交点数--->n条直线中有平行线.:n个点最多有n(n-1)/2个交点. i条直线中j(j<=i)条平行线,i-j条自由线. 则此种交法的交点数就为(i-j)*j+k((i-j)*j为i-j条自由线与j条平行线的交点数,k为i-j条自由线的交点数  ) 则状态转移方程:f[i][j…
直线分割平面问题: 加入已有n-1条直线,那么再增加一条直线,最多增加多少个平面? 为了使增加的平面尽可能的多,我们应该使新增加的直线与前n条直线相交,且不存在公共交点.那么我们可以将新增加的这条直线分为:n-2条线段,和2条射线,每个线段和射线都可以将原有的平面一分为二,所以新增加的平面数目为:(n-2)+2: 折线分割平面问题: 同理为了使新增加的平面尽可能的多,我们应该使新增加的折线的每条射线与之前已有的折线(每个折线有两条射线)都相交,且没有公共交点.那么新增的折线中的每条射线将会被分为…