Slope slope .........
#include<iostream>#include<cstdio>#include<algorithm>#include<map>#include<cstring>#include<cstdlib>#include<vector>using namespace std;struct node{ int x,y; node(){} node(int a,int b){x=a;y=b;}};int main(){ // freopen("in","r",stdin); vector<node>box; map<double,int>dir; string s; int T,i,j,k,n,x,y,ans,t; cin>>T; getchar(); getchar(); for(i=0;i<T;i++) { box.clear(); if(i) cout<<endl; while(1) { getline(cin,s); if(s=="\0") break; sscanf(s.c_str(),"%d%d",&x,&y); box.push_back(node(x,y)); } ans=0; n=box.size(); for(j=0;j<n;j++) { dir.clear(); for(k=j+1;k<n;k++) { t=++dir[double(box[j].y-box[k].y)/double(box[j].x-box[k].x)]; ans=max(ans,t); } } cout<<ans+1<<endl; } return 0;}
Lining up
Time limit:3000 Ms |
|
Memory limit:Unknown |
|
64bit Io format:% LLD & % LlU |
Submitstatus
Description
''How am I ever going to solve this problem? "Said the pilot.
Indeed, the pilot was not facing an easy task. she had to drop packages at specific points scattered in a dangerous area. furthermore, the pilot cocould only fly over the area once in a straight line, and she had to fly over as your points as possible. all points were given by means of integer coordinates in a two-dimen1_space. the Pilot wanted to know the largest number of points from the given Set that all lie on one line. Can you write a program that calculates this number?
Your program has to be efficient!
Input
The input begins with a single positive integer on a line by itself indicating the number of the cases following, each of them as described below. this line is followed by a blank line, and there is also a blank line between two consecutive inputs.
The input consistsNPairs of integers, where 1 <N<1, 700. each pair of integers is separated by one blank and ended by a new-line character. the list of pairs is ended with an end-of-file character. no pair will occur twice.
Output
For each test case, the output must follow the description below. The outputs of two consecutive cases will be separated by a blank line.
The output consists of one integer representing the largest number of points that all lie on one line.
Sample Input
11 12 23 39 1010 11
Sample output
3
Source
Root: Competitive programming: increasing the lower bound of programming contests (Steven & Felix Halim): Chapter 7. (Computational) geometry: geometry basics: Lines
Root: aoapc I: Beginning algorithm contests (rujia Liu): Volume 4. Algorithm Design
Root: Competitive programming 3: the new lower bound of programming contests (Steven & Felix Halim): more advanced topics: Problem decomposition: two components-complete search and geometry
Root: Competitive programming 2: This increases the lower bound of programming contests. Again (Steven & Felix Halim): (Computational) geometry: Basic geometry: points and lines
UVA270-Lining up