做題記錄2021.12.13
阿新 • • 發佈:2021-12-13
CF985E Pencils and Boxes
題目大意
給定 n 個整數 a1 ... an,求是否存在一種分組方案,滿足:
每個整數必須恰好分入一組
每一組至少包含 k 個整數
每一組中最大值與最小值之差 <= d
輸出“YES”或“NO”
思路
首先看到最大值與最小值之差與分組,果斷排序
然後想到一點貪心的想法,把能分且數量夠的先分,不夠的另外處理
再用 \(dp\) 來處理,用一個數組 \(f_i\) 記錄到第 \(i\) 個數是否可行
具體來說,用一個指標 \(pos\) 定位最後可行的位置,每次找到一個 \(f_i\) 可行,不斷移動指標 \(pos\)
程式碼
CF985F Isomorphic Strings
題目大意
定義兩個字串S1,S2匹配當且僅當有一種對映f使得f(S1i)=S2i
給出一個字串S,Q組詢問,每組詢問S[x...x+len-1]與S[y...y+len-1]是否匹配
思路
看完後一頭霧水……(暴力?TLE
轉化一下題意:
對於每一個字元x的對映字元y,只要滿足當x出現的地方y也出現,x不出現的地方y也不出現時(若f(x)=y,則當且僅當S1i=x時,S2i=y),匹配成立
相當於當x的出現情況=y的出現情況
因為題目要求對映相同,而不關心具體字元相同,因此如果兩個字串中每個字母出現情況的集合等價,那麼匹配成立
於是乎,就不需要 \(O(26^2)\) 的枚舉了!直接搞兩個 \(multiset\),把26個雜湊值扔進去,判相同就行了。