CF & Atcoder 好題胡扯

CF & Atcoder 好題胡扯

突然發現我博客背景沒圖,哪位好鴿鴿能給我白嫖下 qwq

去年的 Good Bye 2019 忘打了,補一補。

\(08.23\)

CF1270F Awesome Substrings

根號分治。這 tm 想了一個午睡

對於 \((r-l+1)/cnt_1<\sqrt n\) 的部分,直接把 \(0\) 設成 \(1\)\(1\) 設成 \(-k\) 計算。

對於 \((r-l+1)/cnt_1\ge \sqrt n\) 的部分,可以枚舉有 \(k\)\(1\),然後答案是一個等差數列的形式,可以直接計算。

然後我降智了,\(<\sqrt n\) 的部分沒想到直接開 \(n\sqrt n\),寫了離散化,時間變成 \(\mathcal{O}(n\sqrt{n\log n})\),不過都能過啦,無所謂。

CF1270G Subset with Zero Sum

看到題解就不想打了

當場降智,這道題 nb。

發現 \(1\le i-a_i\le n\),可以 \(i\rightarrow i-a_i\),這是一個基環樹內向森林,找到其中一個環即可。

CF1270E Divide Points

發現去年看過題解的題忘了

考慮將 \(x,y\) 座標奇偶分類,檢查是否能兩組(即兩組都有數),\(00,11\)\(01,10\)\(00,01\)\(10,11\)。若都不符合,把最後一位去掉。因爲 \(n\) 個座標兩兩不同,所以一定有解。

爲什麼把最後一位去掉呢?

因爲歐幾里得距離是 \(\sqrt{(x_i-x_j)^2+(y_i-y_j)^2}\),不能分組說明他們的歐幾里得距離可以整除 \(2\),所以都除以 \(2\) 不影響答案。

CF1270H Number of Components

又 tm 不想寫了,線段樹 nb

先大膽猜想,一個連通塊是一段連續的區間。然後我又降智用 next_permutation 驗證了一下,發現是對了。又想了一下,設 \(i<j<k\)\(p_i<p_k,p_i>p_j>p_k\),矛盾。

然後就 sb 的套用樓房重建的方法,發現 Wrong Answer on test 2,簡稱 WA2

答案是若干個區間 \(\min \in [l_{i-1},l_i)>\max \in [l_i,l_{i+1})\),那個可以數前綴 \(\min>\) 後綴 \(\max\) 的個數。若我們把 \(\ge w\) 的看成 \(1\)\(<w\) 看成 \(0\),那麼分界是形如 \(111111111000000000\) 這樣的,那麼可以維護 \(b_i\not =b_{i-1}\) 的個數,這個數至少爲 \(1\),且答案也是這個數 \(1\) 的數量,可以維護最小值和最小值的個數。線段樹即可,時間 \(\mathcal{O}(n\log n)\)。注意,分界 \(w\) 一定是當前序列 \(a\) 中的某個數。

md,luogu 翻譯裏沒有 a_i 互不相等,自閉了,還是看英文題面吧

\(08.24\)

CF1270I Xor on Figures

nb。

重新定義矩陣乘法,把 \((+,\times)\) 換成 \((\bigoplus,\times)\),乘法換成循環的形式,然後求 \(F^{-1}=F^{2^k-1}\)。因爲乘法是異或,所以當 \(i\not =j\) 時,\((x_i,y_i)\)\((x_j,x_j)\) 對答案的貢獻會計算兩次,所以只有 \((x_i,y_i)\) 翻倍的貢獻,時間 \(\mathcal{O}(kt4^k)\)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章