noip 以後 CF 題選錄

2022-09-07 05:48:10 字數 1701 閱讀 9555

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 如果不...