b rgb coloring
一道簡單題,列舉即可。
c interval game
考慮可以進行的操作只有兩種,即左拉和右拉,連續進行兩次相同的操作是沒有用的。
左拉時肯定會選擇右端點盡量小的,右拉選擇左端點盡量大的,所以排序之後貪心即可。
d choosing points
首先證明對於所有\(d\),假設讓兩個不能同時選的點之間連一條邊,那麼結果是一張二分圖。
\(d\)是奇數可以黑白染色,\(d\)是偶數的時候,顯然連邊的兩點在同乙個顏色內。那麼我們可以只考慮這個顏色,獲得乙個新的網格圖,這個網格圖的邊長較大,這時可以讓\(d\)相應縮小,最終\(d\)會變成奇數。
考慮構造出兩張二分圖,然後就可以把點分為4種,即在兩張圖內分別屬於哪一邊。點數總共\(4n^2\),所以至少一種滿足答案。
e walking on a tree
首先考慮每條邊有多少條路徑經過它,這樣可以得到乙個答案上界是\(\sum\)。實際上這個上界一定能被構造出來。
這種題有一種很經典的想法,就是刪去葉子,使得圖的規模變小,那麼我們就每次考慮乙個葉子節點\(x\)和它唯一的出邊\(e\)。假設\(e\)的經過次數小於2,那麼最終無論是什麼方向都沒有問題,可以砍短一截;否則任意選擇兩條路徑\(x-y\),\(x-z\),假設這兩條路徑都經過了\(x-a\),那麼我們可以令這兩條路徑方向相反,使得\(x-a\)一定被雙向經過,這兩條路徑就變成了\(y-z\)的未定向路徑。這兩條路徑以外的路徑同理砍短一截即可。這樣重複\(n-1\)次就能找到最優解了,複雜度o(nm)。
f addition and andition
從低位開始一位位考慮吧,對於每一位,求出它進行了哪些加法操作和每次操作的時間,不難求出最後的狀態。
複雜度顯然不對,考慮優化。定義勢能函式等於兩倍的\(01\)或者\(10\)加法操作的數量加上三倍的\(11\)加法操作的數量,考慮加法時可能遇見的情況。
假設加上\(01\)或者\(10\),那麼暴力做一定沒問題,因為這樣相當於用兩次這種操作換來一次進製的加法,勢能函式至少減去1。
假設加上\(11\),那麼有兩種情況。如果之前是\(01\)或者\(10\),那麼相當於\(11\)變成\(01\)或者\(10\),勢能函式減少。假設是\(00\),那麼這麼做不改變勢能函式,所以考慮把連續的一段\(11\)用鍊錶接起來縮成一段,這樣就可以\(o(1)\)處理一整段,顯然段數和\(01\)與\(10\)的總量是同乙個級別的。
這樣暴力的做法通過簡單的縮段就變成\(o(n)\)的了。
(我從來沒學過勢能函式,只知道有這個東西,如果是我亂用了,呃…你理解就好了)
AGC047 簡要題解
注意精度問題即可 建顆 trie 樹搞一搞即可 考慮用原根解決此問題,乘法變為了加法,因此用桶記錄一下 fft 即可 觀察題目性質容易發現樹高事 log n 的,即使是暴力列舉第一棵樹最淺的點複雜度也正確。因此就暴力列舉,那麼一條合法的路徑肯定是分別走向兩個兒子的,考慮從左兒子走到第二棵樹每個節點的...
AGC044 簡要題解(部分)
乍一看資料範圍非常唬人,但是仔細思考一下就可以發現這樣乙個事實 從 x 逆著執行操作回到 0 的時候,除了最後一次連續執行若干次 1 操作直至 0 之外,其餘的時候,每兩次除法之間,用 pm1 造成的增量只會在 2,2 之間。實際上,如果下一次除數是 2 或 3 那麼增量只會在 1,1 之間。證明只...
AGC 049 部分簡要題解
nmd 差1分鐘過 e,真就老年選手不配進第一頁 ll 計算每個點的貢獻,做完了 includeusing namespace std typedef long long ll const int n 110 string s n int n bitsettow n int main int s n...