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
題意:沒必要講,就是題面。