復(fù)盤|第94場雙周賽
最多可以摧毀的敵人城堡數(shù)目
【模擬】對每個 1,向左向右找 -1,且中間的必須都是 0。
獎勵最頂尖的 K 名學(xué)生
【哈希表 + 模擬】先把單詞對應(yīng)的分數(shù)存到哈希表里,對于每個report_i找對應(yīng)分數(shù),最后取前k個。
最小化兩個數(shù)組中的最大值
【數(shù)學(xué)】記divisor1和diviso2為d1和d2,記LCM為d1和d2的最小公倍數(shù)。能被d2整除但不能被d1整除的數(shù),能在arr1中且不能在a2中;能被d1整除但不能被d2整除的數(shù),能在arr2中且不能在arr1中;既不能被d1整除也不能被d2整除的數(shù),可以在arr1和arr2中。二分答案x,根據(jù)容斥原理,二分判定條件為x - ?x/d1? - ?x/d2? + ?x/lcm? ≥ max(uniqueCnt1 - ?x/d2? + ?x/lcm?, 0) + max(uniqueCnt2 - ?x/d1? + ?x/lcm?。代碼實現(xiàn)時,二分上界可以取(uniqueCnt1+unique Cnt2)*2-1,因為最壞情況下d1=d2=2,只能取奇數(shù)。
統(tǒng)計同位異構(gòu)字符串數(shù)目
【組合計數(shù)】每個單詞互相獨立,分別計算每個單詞的排列數(shù),再相乘。對于一個長為n的單詞,全排列數(shù)為n!,考慮到相同字符,需要除以m!(m為相同字母的數(shù)量)。設(shè)列表a含有x種元素,其各自的數(shù)量為[cnt1, cnt2, cnt3, cnt4....,cntx],那么ans = C(n, n1)?C(n-c1, c2)?C(n-c1-c2, c3)?...?C(cx, cx)。
也可以用逆元+費馬小定理實現(xiàn)。[費馬小定理:a, p 互素, 且 p 為素數(shù) a^(p-1) mod p = 1 可以推導(dǎo)出 (ans / mul) mod p = (ans / mul?1) mod p = (ans / mul?mul ^ (p - 1)) mod p = (ans * mul ^ (p - 2)) mod p]