Codeforces Round #291 (Div. 2)---B. Han Solo and Lazer Gun
B. Han Solo and Lazer Gun
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
There are n Imperial stormtroopers on the field. The battle field is a plane with Cartesian coordinate system. Each stormtrooper is associated with his coordinates (x, y) on this plane.
Han Solo has the newest duplex lazer gun to fight these stormtroopers. It is situated at the point (x0, y0). In one shot it can can destroy all the stormtroopers, situated on some line that crosses point (x0, y0).
Your task is to determine what minimum number of shots Han Solo needs to defeat all the stormtroopers.
The gun is the newest invention, it shoots very quickly and even after a very large number of shots the stormtroopers don't have enough time to realize what's happening and change their location.
Input
The first line contains three integers n, x0 и y0 (1 ≤ n ≤ 1000, - 104 ≤ x0, y0 ≤ 104) — the number of stormtroopers on the battle field and the coordinates of your gun.
Next n lines contain two integers each xi, yi ( - 104 ≤ xi, yi ≤ 104) — the coordinates of the stormtroopers on the battlefield. It is guaranteed that no stormtrooper stands at the same point with the gun. Multiple stormtroopers can stand at the same point.
Output
Print a single integer — the minimum number of shots Han Solo needs to destroy all the stormtroopers.
Sample test(s)
input
4 0 0
1 1
2 2
2 0
-1 -1
output 2
input 2 1 2
1 1
1 0
output 1
Note
Explanation to the first and second samples from the statement, respectively:
이 방법은 본인이 생각한 것이 아닙니다. 간단하고 쉽게 공유할 수 있기 때문에 인터넷의 대부분보다 훨씬 간결하습니다.코드는 CF에서copy로 직접 온 것입니다. 제목은 당신이 한 점에 있고 주위는 적입니다. 한 직선에 있는 적이라면 모두 해치울 수 있습니다. 최소한 총을 얼마나 쏴야 하는지 물어보는 것입니다.이렇게 하면 우리는 이 점들이 같은 직선에 있는지 판단해야 한다. 이것은 후변에서 자연스럽게 벡터를 생각했지만 용기vector를 사용하는 것은 비교적 번거로운 것 같다. 그래서 고등학교의 지식에 따라 두 벡터를 평행으로 충전하는 조건은 x1*y2-x2*y1=0이다.송이경(신지현): 수학을 못하는 사람은 평생 뭉개지는구나.#include <iostream>
using namespace std;
int main()
{
int num=0;
int n,x0,y0;
int map[1000][2];
scanf("%d%d%d",&n,&x0,&y0);
for(int i=0;i<n;i++)
{
int k=1;
int x,y;
scanf("%d%d",&x,&y);
x-=x0;
y-=y0;
map[i][0]=x;
map[i][1]=y;
for(int j=0;j<i;j++)
{
if(map[i][0]*map[j][1]==map[i][1]*map[j][0])//
{
k=0;
break;
}
}
if(k==1)
num++;
}
printf("%d
",num);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.