d. x-magic pair
發現能夠湊出的數都是這樣形成的:
比如 \(a>b\),那麼一直讓 \(a\) 減 \(b\),如果 \(a那麼交換
然後模擬 \(gcd\) 的過程即可,即求 \(gcd\) 的過程 \(x\%b==a\%b\) 則滿足條件
e. messages
利用期望的線性性,那麼總期望等於各信的期望之和
假如目前選擇 \(t\) 封信,那麼對於乙個信的主人 \(i\),如果 \(k_i\ge t\),那麼獲得 \(1\) 的期望,否則獲得 \(k_i/t\) 的期望
考慮 \(t\) 的範圍,結論是 \(t\le max\\)
證明:假設 \(t\) 取 \(21\) 的最有情況,即前 \(21\) 大的信都有 \(x\) 個人,每個人的 \(k\) 都是 \(20\),那麼減少的為 \(\fracf* 20x\),增加的是 \(\fracfx\),發現最有情況正好相等,那麼意味著 \(t\) 變成更大一定不優
f. armor and weapons
首先暴力的想法是直接 \(bfs\) 二元組 \((a,b)\)
然而乙個很好的條件是特殊點對的加成為 \(1\),那麼發現 \(x\) 或 \(y\) 越大一定越優
可以按照層數來 \(dfs\),那麼對於每層來說如果存在點對 \((x,y)\) 和 \((x',y')\),滿足 \(x\ge x',y\ge y'\),那麼 \((x',y')\) 可以說是沒有用的了
那麼這樣每層的狀態實際上非常少,最多 \(m\) 個,而 \(bfs\) 到答案最多大約 \(log\) 層,那麼複雜度 \(mlogn\)
這道題啟示我們進行類最短路 \(bfs\) 時要盡量地對狀態進行優化與剪枝
g. max sum array
首先是這樣乙個結論:一開始兩端點乙個定放個數最多的那種數,證明省略
那麼就出現了可以遞迴的子問題,然後遞迴處理即可
發現出現不同方案數可能由於每一層同時有多個個數最多的數,假設有 \(k\) 個
通過同樣的方式可以證明擺放順序沒有關係,那麼有 \((k!)^2\) 種方案
利用桶排 \(o(m)\) 處理即可
c. skyline photo
寫出來 \(dp\) 方程:\(f[i]=max\}\}\)
發現轉移是成段的,即每個 \(i\) 管理一段
那麼可以直接用單調棧來解決這個問題,每個單調棧裡記錄棧中這個元素到上乙個元素之間的最優轉移即可
d. useful edges
首先是暴力的想法,列舉每一條邊,列舉每乙個三元組,如果滿足 \(dis[u][x]+w(x,y)+dis[y][v]\le l\) 則滿足條件
移項得 \(dis[u][x]+w(x,y)\le l- dis[y][v]\)
兩邊都有的是 \(u,y\),那麼對於固定的 \(u,y\),列舉一邊更新另一邊即可
cf1136e nastya hasn't written a legend
我也不知道正解是怎麼想到這道題中的不變數的……
發現 \(a_i\ge a_+k_\ge …… \ge a_1+sum_\)
那麼設 \(u_i=a_i-sum\)
那麼帶入得到 \(u_i\ge u_\),即是單調的
操作一相當於單點加,配合線段樹上二分與區間覆蓋來維護單調新
操作二相當於區間和,減去字首和的字首和
注意可能區間賦值為零,\(lazy\) 標記要初始化為 \(-inf\)
cf刷題日誌
e1.send boxes to alice easy version e2.send boxes to alice hard version easy和hard都沒想出來怎麼貪心。首先對於k 1k 1k1 且k1 k2k 1 k 2 k1 k2 可以顯然得到結論1 把所有數組合為k 1k 1 k1...
cf刷題日記 1 28 2 1
題意 給你一棵樹,每個節點上有若干餅乾,並且給出每個節點上吃一塊餅乾需要多少時間,同時給出走過一條邊所需時間。總時限為 tt,兩個人輪流進行操作 mitya從當前節點擊擇乙個子節點向下走,或者直接結束遊戲並往根回動吃餅乾 vasya割斷當前節點到其某個子節點的邊,或者什麼都不做。問mitya可以吃到...
CF構造題練習記錄
發現自己構造太菜了 於是決定上cf按tag找題來做 不定期更新 是cf上2000 2500的構造題 cf1506f 題意太長不翻譯了 把原圖路徑畫一畫,大概是一堆這樣的東西 構造路徑的時候,按照斜線分組 如果兩個點在同一組的話,那麼看它是奇數還是偶數 奇數的話要把所有的路徑變向,否則消耗為0 如果不...