CodeForces 275C k-Multiple Free Set
2014-04-25 00:26
337 查看
C. k-Multiple Free Set
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
A k-multiple free set is a set of integers where there is no pair of integers where one is equal to another integer multiplied by k.
That is, there are no two integers x and y (x < y) from
the set, such that y = x·k.
You're given a set of n distinct positive integers. Your task is to find the size of it's largest k-multiple
free subset.
Input
The first line of the input contains two integers n and k (1 ≤ n ≤ 105, 1 ≤ k ≤ 109).
The next line contains a list of n distinct positive integers a1, a2, ..., an (1 ≤ ai ≤ 109).
All the numbers in the lines are separated by single spaces.
Output
On the only line of the output print the size of the largest k-multiple free subset of {a1, a2, ..., an}.
Sample test(s)
input
output
Note
In the sample input one of the possible maximum 2-multiple free subsets is {4, 5, 6}.
二分查找
(写得有点丑!)
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
A k-multiple free set is a set of integers where there is no pair of integers where one is equal to another integer multiplied by k.
That is, there are no two integers x and y (x < y) from
the set, such that y = x·k.
You're given a set of n distinct positive integers. Your task is to find the size of it's largest k-multiple
free subset.
Input
The first line of the input contains two integers n and k (1 ≤ n ≤ 105, 1 ≤ k ≤ 109).
The next line contains a list of n distinct positive integers a1, a2, ..., an (1 ≤ ai ≤ 109).
All the numbers in the lines are separated by single spaces.
Output
On the only line of the output print the size of the largest k-multiple free subset of {a1, a2, ..., an}.
Sample test(s)
input
6 2 2 3 6 5 4 10
output
3
Note
In the sample input one of the possible maximum 2-multiple free subsets is {4, 5, 6}.
二分查找
(写得有点丑!)
#include<stdio.h> #include<algorithm> using namespace std; long long a[100010],vis[100010]; long long ans,n,k; void search(long long x) { long long l=1,r=n; while(l<r) { if(a[l]==x) { if(!vis[l]) { vis[l]=1; ans--; break; } } if(a[r]==x) { if(!vis[r]) { vis[r]=1; ans--; break; } } long long mid=(l+r)/2; if(a[mid]>x) { r=mid; } else if(a[mid]<x) { l=mid; } else if(a[mid]==x) { if(!vis[mid]) { vis[mid]=1; ans--; break; } } if(l+1==r)break; } } int main() { scanf("%I64d%I64d",&n,&k); for(long long i=1;i<=n;i++) { scanf("%I64d",&a[i]); } if(k==1&&n>1) { printf("%I64d\n",n); return 0; } sort(a+1,a+n+1); for(long long i=1;i<=n;i++)vis[i]=0; ans=n; for(long long i=1;i<=n;i++) { if(!vis[i])search(a[i]*k); } printf("%I64d\n",ans); return 0; }
相关文章推荐
- CodeForces 275C k-Multiple Free Set(二分)
- CodeForces 275C k-Multiple Free Set(二分查找)
- codeforces 274A. k-Multiple Free Set【二分】
- CodeForces 274A k-Multiple Free Set【思维】
- codeforces 274A k-Multiple Free Set
- CodeForces - 274A - k-Multiple Free Set
- CodeForces 274A k-Multiple Free Set (二分)
- codeforces 274A k-Multiple Free Set
- 【CodeForces】[274A]k-Multiple Free Set
- CodeForces - 274A - k-Multiple Free Set
- Codeforces 274A k-Multiple Free Set
- CodeForces 274A k-Multiple Free Set
- Codeforces 274A:k-Multiple Free Set(初识set集合)
- 【CodeForces】275C - k-Multiple Free Set(STL)
- CodeForces 274 A. k-Multiple Free Set
- uva 11246 - K-Multiple Free set(数论)
- CF 274 A. k-Multiple Free Set
- k-Multiple Free Set
- UVA 11246 - K-Multiple Free set(数论推理)
- Coderforces 274A k-Multiple Free Set【二分】