codeforces口胡記錄

2022-05-23 21:18:08 字數 2637 閱讀 8390

題意:

2d平面上給出若干條垂直或水平的線段,求共構成了幾個封閉的矩形。

題解:大概就是先把每行每列先做乙個簡單的線段處理(處理成若干連續段),然後維護乙個從下往上的掃瞄線,並且在掃的時候對每個橫座標維護在它上面是否有連續的豎直線段,對於每個橫線段(長度為1,即兩個橫座標之間)維護在當前的掃瞄線下,是否有水平線段覆蓋了這一段。然後每當鋪上一條水平線段,就進行一次統計。由於資料範圍較小,(應該)只要保證統計的複雜度不劣於\(\mathcal o(len)\)即可。

複雜度大概是\(\mathcal o((n + v)v)\)。

題意:\(n\)個題, 按照第\(i\)題隨機\(t_i\)或\(t_i + 1\)秒鐘完成, 總共有\(t\)秒時間, 求做題數期望。

題解:最基本的想法是考慮對於乙個01序列,考慮其貢獻。但是我們會發現後面有些1是沒有用的。

我們可以考慮列舉有多少個題多花了1s完成的。(即有用的1的個數)

實際上,列舉個數後,我們不需要關心這些多花的1s究竟在哪些題上,這很關鍵。

清楚這件事情以後,我們就可以列出式子:

\[f_i = \binom 2 ^

\]其中\(f_i\)為有\(i\)個題多花了1s完成的方案數,\(m_i\)為有\(i\)個題多花了1s完成,能完成的題數。

則答案即為

\[\frac

\]待填。

題意:給出乙個序列,求最大的乙個連續子串行\(a_\),滿足

\[\sum_ ^ r a_i - k \lfloor \frac \rfloor

\]題解:

設字首和陣列為\(s\),即求

\[\max \ \rfloor\}

\]考慮\(m\)大小只有10,我們直接把原序列分成以\(m\)為大小的若干塊。

大概做\(m\)次分塊的樣子,每次塊起點不同。

對於一次分塊,我們可以把每一塊縮成乙個點,設\(t_i\)是這個塊內\(s\)的最大值,則本次分塊的答案為

\[\max \

\]這個問題顯然\(\mathcal o(\frac )\)可以做。

然後對每次分塊的答案取最大值即可。複雜度是\(\mathcal o(nm)\)的。

題意:你有n個俄羅斯套娃,已知每個套娃的容積和體積,問有多少個子集滿足:

這個子集是乙個極大子集,即不能再新增其它的套娃到這個子集裡;

在上面的條件下子集的套娃之間的間隙和最小。

題解:感覺不就是一道normaldp嗎……?真是nmdp……

題意:給出\(n\)個遊戲,每個遊戲都是相似的。

其中第\(i\)個遊戲上面有\(a_i\)個格仔,並且某些塗上了顏色。

alice和bob進行博弈,初始時在每個遊戲的最後乙個格仔都有乙個棒子,行動規則是

1.不能將某根棒子移出邊界;

2.只能將某個棒子向前移動\(\\)格;並且如果當前格仔塗有顏色,會有一些限制,使得向前移動的步數集合是\(\\)的子集。

問有多少塗色方案,使得最終bob(後手)必勝。取模。

題解:考慮單個遊戲的sg值。如果我們知道了第\(i\)個遊戲sg為\(j\)的方案數\(f_\),那麼就可以輕鬆合併了。(sg的值最大只有3,這很重要)

考慮如何求出這個東西。

設\(dp_\)為第\(i - 2, i - 1, i\)個位置sg分別為\(a, b, c\)的方案數。

由於\(a, b, c \in \\),所以可以把後面的\(a, b, c\)壓成一維長為64的陣列。

考慮從乙個沒有顏色的格仔轉移到另乙個沒有顏色的格仔,轉移始終是一樣的,可以預處理出轉移矩陣,然後做vector-matrix multiply

對於初始就有顏色的格仔,由於比較少,只有1e3左右,所以直接在這些地方暴力轉移即可。

複雜度是\(\mathcal o(n l ^ 2 \log v + m l ^ 2)\)。其中\(l = 64\)為矩陣大小。

題意:乙個01序列,alice和bob進行遊戲,輪流操作,每次可以把連續\(k\)個全部變成0或1(\(k\)是常數),最後把序列全變成0或1的人獲勝。

問先手必勝還是後手必勝還是平局。

題解:首先,如果alice第一次操作後沒有贏,那一定沒機會贏了,因為bob可以做無用操作,使結果不劣於平局。

除了這種情況,只有bob可以在自己的第一次操作就贏下遊戲。

那麼bob能否在自己的第一次贏下遊戲,條件就是alice第一次進行任意操作都是必敗操作。

即對於alice的任意一種操作,如將\([i, i + k -1]\)變成0,那麼要保證,區間\([1, i - 1]\)或\([i + k, n]\)這兩個區間中有且僅有乙個區間有1。

總複雜度大概可以做到線性。

題意:平面上有若干點,求用乙個u形框一些點,問能框住的點集的種類數。

其中u形是兩條豎直射線和一條水平線段。

題解:考慮從上向下列舉縱座標,統計出縱座標在當前掃瞄線上的點,橫座標有多少種,設為\(s\)。

可以說,答案的一部分就是\(\binom \),但是可能重複了統計了上一次掃瞄線統計(即上一次列舉縱座標)的點。

設有\(t\)種橫座標是恰好在當前掃瞄線(列舉當前縱座標)之前就存在的,則要減去\(\binom \)的貢獻。

直接上線段樹+掃瞄線可以做到\(\mathcal o(n \log v)\)。當然也可以先離散化一下。

待填。待填。

口胡高考數學(?)

好吧其實是做不起題雖然現在還是做不起 首先我們把特徵根求出來 這裡要求都不一樣 然後通項公式第x項一定是特徵根的x次方的乙個式子。這個東西我們代入前幾個數解方程即可。考慮常係數線性齊次遞推求第a項是對於 考慮每個特徵根代入原式,我們可以發現 於是我們有m個點值。考慮答案,對這些點值跑拉格朗日插值,然...

Codeforces 練習記錄

標籤裡的 dp 是騙人的,根本沒有 dp 主要思維難度在於乙個轉化,題面開始看上去很嚇人,選取轉化題意就是給定乙個序列,每次可以選取兩個相同的數,在兩者之間選取任意個數消去,問最多能消去多少數。第一想法,選取到兩個數後將之間的所有數都消去會比較優,事實上確實如此,但是如果消去的數之後能與別的數組成區...

重複口胡的動態規劃

今天老師口胡了一波動歸,如果有其他人發了一篇差不多的,一定是我同學!範圍 適於解決多階段 多決策 最優解 求方法數 問題 當前階段 選最優 每次選取能取到的最優值,從而得到乙個區域性最優值 例題 潛水 分而治之 也就是分 治 例題 或用法 快排 歸併排序 當前階段,記錄 所有的最優 也就是常說的空間...