POJ1118 Lining Up
快弄死我了 最后的原因是abs和fabs的区别。。。
说点收获:
1.cmp函数返回的是int,所以不要直接返回double相减的结果
2.define inf 1e9和eps 1e-9
3.在整数相除得到double时要1.0*
4.加上<cmath> ,用fabs取代abs,abs是用来整数取绝对值,应该用fabs
5.思路上,本题可从线的角度考虑转化为从点的角度考虑,这样变为N^2,然后不用hash,然后对斜率,用排序,又有logN。最后为O(N^2*logN)
6.注意边界情况
7.最后找错的时候采用了随机数数据和传说中正确的代码做比较,发现它们也还是有错,只是数据弱而已
8.下面的Discuss还是很有用的
9. GCD的思路也不错,应当会写GCD
此题做得真伤元气
#include <iostream>
#include <cmath> using namespace std; #define inf 1e9
#define eps 1e-9 int cmp(const void * a, const void * b)
{
double * x = (double *) a;
double * y = (double *) b;
if (fabs( *x - *y) < eps) return 0 ;
else if (*x < *y) return -1;
else return 1;
} int main()
{
int count = 0;
while (true)
{
int n;
cin >> n;
if (n == 0)
{
return 0;
}
count++;
int max = 0;
int* x = new int[n];
int* y = new int[n];
for (int i = 0; i < n; i++)
{
cin >> x[i];
cin >> y[i];
}
if (n == 1)
{
max = 2;
}
else if (n == 2)
{
max = 2;
}
else
{
for (int i = 0; i < n; i++)
{
double * tmp = new double[n];
int index = 0;
for (int j = i+1; j < n; j++)
{
if (x[i] == x[j]) tmp[index] = inf;
else
{
tmp[index] = 1.0 * (y[i] - y[j]) / (x[i] - x[j]);
}
index++;
}
qsort(tmp, index, sizeof (double), cmp);
int k = 1;
int prev = 0;
int localMax = 2;
while (k < index)
{
if (fabs(tmp[prev] - tmp[k]) < eps)
{
localMax++;
}
else
{
localMax = 2;
}
if (localMax > max)
{
max = localMax;
}
prev = k;
k++;
}
}
}
cout << max << endl;
}
return 0;
}
POJ1118 Lining Up的更多相关文章
- Lining Up(在一条直线上的最大点数目,暴力)
Lining Up Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- Lining.js - 为CSS提供 ::nth-Line 选择器功能
在CSS中,我们使用 ::first-line 选择器来给元素第一行内容应用样式.但目前还没有像 ::nth-line.::nth-last-line 甚至 ::last-line 这样的选择器.实际 ...
- UVA 270 Lining Up 共线点 暴力
题意:给出几个点的位置,问一条直线最多能连过几个点. 只要枚举每两个点组成的直线,然后找直线上的点数,更新最大值即可. 我这样做过于暴力,2.7s让人心惊肉跳...应该还能继续剪枝的,同一直线找过之后 ...
- UVA 270 Lining Up (几何 判断共线点)
Lining Up ``How am I ever going to solve this problem?" said the pilot. Indeed, the pilot was ...
- 深入解读Linux与Android的相互关系(转-lining)
大家都知道Android是基于Linux内核的操作系统,也曾经和Linux基金会因为内核问题产生过分歧,本文将开始对Android的内核进行剖析,主要介绍Android和Linux之间的关系,后续还会 ...
- POJ-1118(超时,但未找到原因)
#include<iostream> #include<map> #include<vector> using namespace std; //y=kx+z ty ...
- poj 1118 Lining Up(水题)
再思考一下好的方法,水过,数据太弱! 本来不想传的! #include <iostream> using namespace std; #define MAX 702 /*284K 422 ...
- HDU 1432 Lining Up (POJ 1118)
枚举,枚举点 复杂度为n^3. 还能够枚举边的,n*n*log(n). POJ 1118 要推断0退出. #include<cstdio> #include<cstring> ...
- POJ 1118 Lining Up
枚举,排序. 先将所有点按双关键字排序,然后枚举线的顶点$P$,剩余的点以$P$为中心进行极角排序,可以取个$gcd$,这样一样的点就排在一起了,然后统计一下更新答案. #pragma comment ...
随机推荐
- 分享:PHP数组排序总结
本文内容:PHP二维数组排序,PHP数组排序总结. php数组排序是PHP学习中最基础也是最重要的一部分. 1.常规数组的排序 常规数组是指数组各元素均为字符串或数字,这与这样的数组,我们可以采用so ...
- 为什么24位位图(真彩色)的biSizeImage不等于(biWidth*biBitCount+31)/32*4*biHeight?
规定的,规定BMP文件的像素数据是按行存储的,而且每行的字节数必须为4的倍数,如果实际的像素数据不是4的倍数咋办?这就需要字节对齐,对齐是在一行的末尾添0以补足一行的字节数为4的倍数, ( biWid ...
- Unable to create the store directory. (Exception from HRESULT: 0x80131468)
一个ASP.NET的程序,使用了MS ReportViewer报告控件,在用该控件导出生成Excel文件时,先是提示行不能超过65535. 这个是由于Excel2003的行限制的原因.由于修改成用Ex ...
- 如何在mysql中退出当前窗口界面而不关闭窗口的方法
CTRL+Cexit;quit ;
- STL学习二:Vector容器
1.Vector容器简介 vector是将元素置于一个动态数组中加以管理的容器. vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲). vector尾部添 ...
- backup site collection
http://stackoverflow.com/questions/5376380/sharepoint-2010-change-sitecollection-urlstsadm -o backup ...
- windows 2012上配置好iis后出现不能访问的现象
新买的阿里云服务器,今天把环境弄了一下,安装iis之后不能访问网页 原因:没有安装asp.net 找到服务器管理器->(右上角)添加角色和功能->下一步下一步...找到应用程序 -> ...
- Visual Studio Code asp.net 5环境搭建技能Get
启动准备阶段 预热 1 VS Code 官方地址:https://www.visualstudio.com/en-us/products/code-vs.aspx 2 安装Node.js :https ...
- 在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- OI 回忆录
时间过得好快,一下子就高三了,一下子就退役了,两年的时间仿佛就在一眨眼的功夫内度过了.不过还是想回忆回忆这两年的雨雪风霜,也就当做个总结吧. 高一其实并没有什么好说的,反正就这么颓到了高二. 高二上学 ...