8.12~8.24總結

KukCair發表於2024-11-23

8.12

[ARC159B] GCD Subtraction

題意:沒必要講,就是題面。

按題目直接模擬會超時,考慮最佳化。

發現在 \(a,b\) 互質時特別慢,每次只能減一,因此應將減一的操作合併。

設會減 \(x\) 次一,則 \(\gcd(a-x,b-x) = c (c \ne 1)\)

\(a-x \equiv b-x \pmod c\)\(a \equiv b \pmod c\)

\(d\)\(a - b\) 的因數。列舉 \(a - b\) 的因數即可算出 \(x\)

Border

題意:可以使用 \(n\) 種數 \(a_1,a_2,\dots , a_n\) 任意次並相加,問 \(\bmod k\) 後有哪些可能的個位。

設每個 \(a_i\) 的個數為 \(x_i\),則相加的和為 \(x_1a_1+x_2a_2+\dots+x_na_n=s\)

根據裴蜀定理擴充可知,\(s\) 一定是 \(\gcd(a_1,a_2,\dots,a_n)\) 的倍數。不妨設為 \(x\) 倍。

\(x \cdot \gcd(a_1,a_2,\dots,a_n) \equiv s \pmod k\)

根據裴蜀定理,\(x\cdot \gcd(a_1,a_2,\dots,a_n)+ky=s\)

再次根據裴蜀定理可得 \(\gcd(k, \gcd(a_1,a_2,\dots,a_n))\)\(s\) 的因數。

即答案為 \(\gcd(k, \gcd(a_1,a_2,\dots,a_n))\) 不超過 \(k\) 的所有倍數。

8.13 思維訓練

[ABC216D] Pair of Balls

題意:沒必要講,就是題面。

拓撲拓撲拓撲拓拓撲撲拓撲拓撲拓拓撲撲拓撲拓撲

每種顏色的球的先置即為它的上一個。拓撲判環即可。

Walk

題意:沒必要講,就是題面。

矩陣快速冪模板。答案為矩陣 \(a^k\) 中所有元素的和。

8.14 CSPS模擬測

hugclose

正解是字典樹,但暴力可過。

wayhome

有電往前走,沒電回頭充。

[ABC280F] Pay or Receive

預處理每個連通塊,並查集判斷 -1,有正環即為 inf,否則答案為 \(dis_y - dis_x\)

8.15

Tree Painting

題意:沒必要講,就是題面。

換根 dp,最後加上 \(n\) 即可(每個點都還有為一的大小)。

寶物篩選

題意:這下小 FF 可發財了,嘎嘎。

\(n\) 個物品,每種物品的價值為 \(v_i\),重量為 \(w_i\),有 \(m_i\) 件。有一個容量為 \(W\) 的揹包。現求物品總體積不超過揹包容量時價值最大為多少。

直接多重揹包會超時。

可以使用二進位制最佳化。將每個 \(m_i\) 拆分成 $ \le m_i$ 的所有 \(2^x\) 以及 $ \le m_i$ 的所有 \(2^x\) 的和與 \(m_i\) 的差。

然後正常多重揹包即可。

大師

題意:在陣列 \(h\) 中選擇 \(x(x \ge 1)\) 個數,使得這 \(x\) 個數按原順序排列構成一個等差數列。問有多少種選法。

\(dp_{i,j}\) 為以第 \(i\) 個數結尾,公差為 \(j\) 的選法數。

\(j\) 可能是負數,因此需要陣列偏移。

列舉到 \(i\) 時,將所有 \(j < i\)\(dp_{i, h_i-h_j}\) 加上 \(dp_{i, h_i-h_j}+1\),並將答案也增加 \(dp_{i, h_i-h_j}+1\)

最後直接輸出答案。

8.19

Ice Skating

題意:平面上有 \(n\) 個點,最少需要加幾個點才能使得所有點都兩兩互通。當兩個點處於同一行或同一列時,兩個點互通。

並查集。

雙重迴圈列舉兩個不同的點,若兩個點處於同一行或同一列,將兩個點併為一個連通塊中。

因為需要加的點最少,答案就是連通塊數量 \(-1\)

Almost Acyclic Graph

題意:給定一個 \(n\) 個頂點,\(m\) 條邊的有向圖。問是否能夠刪掉一條邊後使圖無環。

拓拓撲撲拓撲拓撲拓拓撲撲拓撲拓撲拓拓拓撲撲撲拓撲拓撲

列舉刪去哪一條邊,然後再跑拓撲。

8.20 思維訓練

Shaass and Bookshelf

題意:沒必要講,就是題面。