a156: Q-2-7. 互補團隊
標籤 : APCS201906
通過比率 : 23人/30人 ( 77% ) [非即時]
評分方式:
Tolerant

最近更新 : 2021-11-02 10:17

內容

前 m 個英文大寫字母每個代表一個人物,以一個字串表示一個團隊,

字串由前 m 個英文大寫字母組成,不計順序也不管是否重複出現,有出現的字母表示該人物出現在團隊中。

兩個團隊沒有相同的成員而且聯集起來是所有m 個人物,則這兩個團隊稱為「互補團隊」。

輸入 m 以及n 個團隊,請計算有幾對是互補團隊。我們假設沒有兩個相同的團隊。

輸入說明

第一行是兩個整數 m 與 n,2 ≤ m ≤ 26,1 ≤ n ≤ 50000。

第二行開始有 n 行,每行一個字串代表一個團隊,每個字串的長度不超過100。

輸出說明

輸出有多少對互補團隊

範例輸入 #1
10 5
AJBA
HCEFGGC
BIJDAIJ
EFCDHGI
HCEFGA
範例輸出 #1
2
測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (20%): 1.0s , <10M
公開 測資點#1 (20%): 1.0s , <10M
公開 測資點#2 (20%): 1.0s , <10M
公開 測資點#3 (20%): 1.0s , <10M
公開 測資點#4 (20%): 1.0s , <10M
提示 :

找集合。因為字串中有重複的字母而且沒有照順序,我們需要將每一個集合表示成唯一的表式方式才能夠有效的搜尋。有兩個方法可以做:

  •  將每個字串去除重複字母且裡面的字母是由小到大排列的。例如AJBA就改成ABJ,HCEFGGC就改成CEFGH。
  •  以一個整數表示一個集合,第i個bit設為1代表第i個字母在集合中,否則為0。此
標籤:
APCS201906
出處:
ap325 [管理者: ]


編號 身分 題目 主題 人氣 發表日期
22
011017@stu.c... (教我C++)
a156
抱怨 & 思路
241 2022-08-07 16:13