時間限制: 1 s
空間限制: 128000 kb
題目等級 : ** gold
題解檢視執行結果
description
有這樣的乙個集合,集合中的元素個數由給定的n決定,集合的元素為n個不同的正整數,一旦集合中的兩個數x,y滿足y = p*x,那麼就認為x,y這兩個數是互斥的,現在想知道給定的乙個集合的最大子集滿足兩兩之間不互斥。
輸入描述
input description
輸入有多組資料,每組第一行給定兩個數n和p(1<=n<=10^5, 1<=p<=10^9)。接下來一行包含n個不同正整數ai(1<=ai<=10^9)。
輸出描述
output description
輸出一行表示最大的滿足要求的子集的元素個數。
樣例輸入
sample input
4 21 2 3 4
樣例輸出
sample output
資料範圍及提示
data size & hint
這題應該是貪心吧,
但是這貪心比較玄學。。
1 #include2 #include3 #include4 #include5 #include6 #include7using
namespace
std;
8void read(int &n)913
while(c>='
0'&&c<='9'
)14
15 flag==1?n=-x:n=x;16}
17int
n;18
int a[1000001
];19
int comp(int a,int
b)20
23//
int hash[10000001];
24 maphash;
25int
main()
2641
}42 printf("%d"
,ans);
43return0;
44 }
wikioi 1553 互斥的數
題目大意 給定n 和 p,規則 if x y p 那麼x 與 y 互斥。找出最大的集合,每個元素兩兩不互斥。思路 既然x p 和 y 互斥,那麼,如果有a i 滿足a i p 和 a i 互斥,就刪掉a i p。因為如果刪除a i p 會使a i p p 可以存在於集合中,所以刪a i p 一定不會...
wikioi1553 互斥的數
時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解 有這樣的乙個集合,集合中的元素個數由給定的n 決定,集合的元素為 n個不同的正整數,一旦集合中的兩個數 x,y滿足 y p x 那麼就認為 x,y這兩個數是互斥的,現在想知道給定的乙個集合的最大子集滿足兩兩之間不互斥。輸入描述...
CODEVS 1553 互斥的數
有這樣的乙個集合,集合中的元素個數由給定的n決定,集合的元素為n個不同的正整數,一旦集合中的兩個數x,y滿足y p x,那麼就認為x,y這兩個數是互斥的,現在想知道給定的乙個集合的最大子集滿足兩兩之間不互斥。輸入有多組資料,每組第一行給定兩個數n和p 1 n 10 5,1 p 10 9 接下來一行包...