Codeforces Round #291 (Div. 2)——B<set>—— Han Solo and Lazer Gun

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 nx0 и 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 xiyi ( - 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 01 12 22 0-1 -1

output

2

input

2 1 21 11 0

output

1

Note

Explanation to the first and second samples from the statement, respectively:

大意:瞄准点在x,y有n个人,连在一起的话就打一枪,set新技能get~

#include<cstdio>
#include<set>
using namespace std;
set<double>se;
int main()
{
    int n,x,y,x1,y1,flag = 0;
    scanf("%d%d%d",&n,&x,&y);
    for(int i = 1; i <= n; i++){
        scanf("%d%d",&x1,&y1);
       if(y == y1) flag = 1;
       else se.insert((double)(x-x1)/(y-y1));
    }
    printf("%d\n",se.size()+flag);
}

时间: 2024-12-25 22:53:40

Codeforces Round #291 (Div. 2)——B<set>—— Han Solo and Lazer Gun的相关文章

hash+set Codeforces Round #291 (Div. 2) C. Watto and Mechanism

题目传送门 1 /* 2 hash+set:首先把各个字符串的哈希值保存在set容器里,然后对于查询的每一个字符串的每一位进行枚举 3 用set的find函数查找是否存在替换后的字符串,理解后并不难.另外,我想用64位的自然溢出wa了,不清楚 4 */ 5 /************************************************ 6 * Author :Running_Time 7 * Created Time :2015-8-5 13:05:49 8 * File N

Codeforces Round #291 (Div. 2)解题报告A.B.C.D

A - Chewbaсca and Number 大于4的倒置,小于等于4的不倒置.注意第一位如果是9则不倒置. 代码如下: #include <iostream> #include <string.h> #include <math.h> #include <queue> #include <algorithm> #include <stdlib.h> #include <map> #include <set>

Codeforces Round #291 (Div. 2) B. Han Solo and Lazer Gun

因为是x,y均为整数因此对于同一直线的点,其最简分数x/y是相同的(y可以为0,这里不做除法)于是将这些点不断求最简分数用pair在set中去重即可. #include <cmath> #include <cstdio> #include <cstdlib> #include <cassert> #include <cstring> #include <set> #include <map> #include <li

Codeforces Round #291 (Div. 2) E - Darth Vader and Tree (DP+矩阵快速幂)

这题想了好长时间,果断没思路..于是搜了一下题解.一看题解上的"快速幂"这俩字,不对..这仨字..犹如醍醐灌顶啊...因为x的范围是10^9,所以当时想的时候果断把dp递推这一方法抛弃了.我怎么就没想到矩阵快速幂呢.......还是太弱了..sad..100*100*100*log(10^9)的复杂度刚刚好. 于是,想到了矩阵快速幂后,一切就变得简单了.就可以把距离<=x的所有距离的点数都通过DP推出来,然后一个快速幂就解决了. 首先DP递推式很容易想到.递推代码如下: for(

Codeforces Round #291 (Div. 2)

A 题意:给出变换规则,单个数字t可以变成9-t,然后给出一个数,问最小能够变成多少. 自己做的时候理解成了不能输出前导0,但是题目的本意是不能有前导0(即最高位不能是0,其余位数按照规则就好) 555555---读题仔细o(╯□╰)o 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 char

C. Watto and Mechanism 字典树 Codeforces Round #291 (Div. 2)

C. Watto and Mechanism time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output Watto, the owner of a spare parts store, has recently got an order for the mechanism that can process strings in a ce

Codeforces Round #291 (Div. 2)(B)

水题但是WA2发了,要特别考虑斜率不存在的情况,最后的答案就是斜率不同的数目,set一下 #include<cstdio> #include<cstring> #include <iostream> #include<queue> #include <cmath> #include <set> using namespace std; const int maxn=65000+10; const int INF=1<<30

Codeforces Round #291 (Div. 2)(A)

看一眼就知道的题目往往还要再看看题意....不然白白WA后悔死了 #include<cstdio> #include<cstring> #include <iostream> #include<queue> #include <cmath> using namespace std; const int maxn=65000+10; const int INF=1<<30; typedef long long LL; int main(

Codeforces Round #291 (Div. 2) C - Watto and Mechanism 字符串

[题意]给n个字符串组成的集合,然后有m个询问(0 ≤ n ≤ 3·105, 0 ≤ m ≤ 3·105) ,每个询问都给出一个字符串s,问集合中是否存在一个字符串t,使得s和t长度相同,并且仅有一个字符不同.(字符串总长度为6·105),所有字符只有a,b,c. [题解]因为只有三种字符,用Trie最合适.先把n个字符串插入到Trie中.然后每读入一个字符串,首先枚举差异字符的位置,依次替换为另外两种字符,并检查是否合法.如果合法就直接输出YES. 显然每替换一个字符就从头检查一遍太浪费时间,