復盤|第319場周賽
溫度轉換
【模擬】按題意模擬。
最小公倍數(shù)為 K 的子數(shù)組數(shù)目
【暴力枚舉】數(shù)據(jù)范圍小,n^2枚舉(加上求lcm的logk,一共n^2 + nlogk),固定起點,枚舉終點,增量式求lcm,如lcm(a,b,c) = lcm(lcm(a, b), c)。因為lcm越算越大,所以如果LCM > k(或k % LCM > 0)直接break。
還可以優(yōu)化下,用LCM 的性質。
逐層排序二叉樹所需的最少操作數(shù)目
【BFS + 置換環(huán) + 離散化】置換環(huán),環(huán)與環(huán)之間交換會使得環(huán)變大,所以只要環(huán)內交換就行了(拆環(huán)圖,最終拆成n個自環(huán))。找環(huán)——從第一個數(shù)開始,把這個數(shù)字當成下標去訪問,不斷循環(huán)知道回到這個數(shù)本身,計算每個環(huán)內需要幾次交換,對于每個環(huán),交換次數(shù)為環(huán)大小-1(離散化是有序數(shù)組變成0~n,離散化的方式除了二分還可以map)
此題也可以用并查集。
不重疊回文子字符串的最大數(shù)目
【DP】枚舉每個可能的回文中心,用兩個指針分別向左右兩邊擴展,當兩個指針指向元素相同就拓展,否則停止拓展?;匚拈L度為奇數(shù),回文中心是一個字符,偶數(shù)是兩個字符,但可以用一個循環(huán)搞定。長度為n的字符串會生成2n-1組回文中心[l_i, r_i]。 l_i = ?i/2?,r_i = l_i + (i mod 2),從0~2n - 2遍歷i,就能得到所有可能的回文中心,統(tǒng)一了奇偶兩種情況。
此題也可以用馬拉車,空間O(n)但時間會快。