主講人igl
albl
試題t2 t3
t1 t4 t5
暴力:dfs所有路徑,在使用clock的情況下預計\(\text\)
題意:給你一張有向圖,距離為 \(\text\) 的正整數次冪的兩點間可以重新連一條長為 \(\text\) 邊,求在此情況下的從起點到終點最短路。
我們用 \(\text\) 表示點 \(\text\) 到點 \(\text\) 之間是否存在長為 \(\large 2^o\) 的邊。有為真,否則為假。顯然如果 \(\text\),那 \(\text\)。預處理原圖中相連的點為 \(\text\)。用 \(\text\) 表示兩點間的最短距離,預處理原圖中相連的點距離為 \(\text\),不相連的賦最大值。
然後倍增處理連新邊,最後跑最短路即可。
資料這麼小,\(\text\) 可以了。
考慮暴力列舉,第一維列舉希兒追殺的時間點,第二維列舉追殺誰,直接模擬即可,\(\text\),預計得分\(\text\)
仔細觀察,我們可以發現一些性質:我們設上帝的一次追殺事件為 \(\text\),我們可以得到乙個小結論:
對於 \(\text\ne \text_\text\),則這個事件插入在 \(\text\) 之前還是之後都是等價的,需要的話口胡證明。
因此,我們可以嘗試在每乙個事件前插入 \((0,u_i)\) 之後直接暴力模擬,模擬一次的複雜度為 \(\text\),這題還有乙個點—— \(\text n\ge\text m\),所以很容易想到當追殺無效直接跳過,則至多進行 \(\text\) 次,複雜度\(\text\)。
這題暴力的話就嗯dfs預計得分\(\text\)
這是一道恨不得拍到你臉上告訴你「這是四維偏序板子」的一道題,具體實現就是 \(\text\) 套 \(\text\) , 複雜度 \(\text^3\text\),用\(\text\) 的話會更快(但是我不會呵呵呵)
然後因為我自己的原因我的 \(\text\) 跑了\(\text\)(不會有暴力過了吧)
blog
一切開始之前,我們先推導乙個引理:
\[\large^ni^2,n\ge0\\
f(n)=\frac}\]
這裡提供五種推導它的方法。
一、查詢法
通過搜尋引擎,題解,文獻等,我們找到了這個公式:
\[\large f(n)=\frac
\][doge]
二、歸納法
\[\large
\begin
&f(n)=\frac\\\
&=\frac)}\\
&\\&f(0)=0\\
&f(n)=f(n-1)+n^2\\
&3f(n)=(n-1)n(n-\frac)+3n^2\\
&=(n^3-\fracn+\fracn)+3n^2\\
&=n^3+\fracn^2+\fracn\\
&=n(n+\frac)(n+1)\\
&\textn\ge0,f(n)=\frac
\end
\]三、二重合式展開與收縮
\[\large
\begin
&f(n)=\sum_^nk^2\\
&=\sum_^n\sum_^nk\\
&=\sum_^n\frac(n-j+1)\\
&=\frac\sum_^n(n(n+1)+j-j^2)\\
&=\fracn^2(n+1)+\fracn(n+1)-\fracf(n)\\
&=\fracn(n+\frac)(n+1)-\fracf(n)\\
&\\&\fracf(n)=\fracn(n+\frac)(n+1)\\
&f(n)=\frac
\end
\]對 \(\sum_^nk^2=\sum_^n\sum_^nk\) 的解釋:
我們知道,乙個數 \(n\) 加和 \(n\) 次,就是 \(n^2\)。
將右式展開:
1+2+3+4+5+6+...+n
2+3+4+5+6+...+n
3+4+5+6+...+n
4+5+6+...+n
5+6+...+n
6+...+n
......+n
剛好每個數 \(k\) 加 \(k\) 次,與原式等價。
四、瞎搞法
利用恒等式 \(\large(n+1)^3=n^3+3n^2+3n+1\),可以得到:
\[\large
\begin
&(n+1)^3-n^3=3n^2+3n+1\\
&n^3-(n-1)^3=3(n-1)^2+3(n-1)+1\\
&\cdots\cdots\\
&2^3-1^3=3*(1^2)+3*1+1
\end
\]把這 \(\large n\) 個等式兩端分別相加,得:
\[\large(n+1)^3-1=3\times\frac+n+3\sum_^ni^2\\
\large n^3+3n^2+3n=3\times\frac+n+3\sum_^ni^2\\
\]\[\large\sum_^ni^2=\frac
\]五、擾動法
這是最實用的方法。
對於 \(f(n+1)\) ,抽出 \((n+1)^2,0^2\)。
\[\large
\begin
&f(n)+(n+1)^2\\
&=\sum_^n(k+1)^2\\
&=\sum_^n(k^2+2k+1)\\
&=\sum_^nk^2+2\sum_^nk+\sum_^n1\\
&=f(n)+2\sum_^nk+(n+1)\\
&\\&\sum_^nk=\frac((n+1)^2-(n+1))=\frac
\end
\]額。。。有個毛用?
等等,二次冪可以推出一次冪求和,那是不是三次冪可以推出二次冪求和?
設\[\large g(n)=\sum_^nk^3
\]從 \(g(n)\) 中抽出 \((n+1)^3, 0^3\)。
\[\large
\begin
&g(n)+(n+1)^3\\
&=\sum_^n(k+1)^3\\
&=\sum_^n(k^3+3k^2+3k+1)\\
&=\sum_^nk^3+3\sum_^nk^2+3\sum_^nk+\sum_^n1\\
&=g(n)+3f(n)+\frac+(n+1)\\
&\\&3f(n)=(n+1)^3-\frac-(n+1)\\
&=n^3+3n^2+3n+1-\frac-n-1\\
&=n^3+\frac+\frac\\
&=(n+1)(n+\frac)n\\
&\\&f(n)=\frac)}
\end
\]通過此方法,我們可以從 \(n+1\) 次冪推出 \(n\) 次冪!!!
好,接下來回歸題目:
從 \(1\) 到 \(\sqrt\) 列舉 \(x\),那 \(y\) 的最大值為 \(\sqrt\),因為再大會超出這個圓。
當然 \(y\) 向下取整。
\(\large x\) 的貢獻總和為 \(\large x^2y\),\(\large y\) 的貢獻總和為 \(\large\frac\)。
相加即可。
推銷 blog
先給結論:
\[\large \sum_\varphi(k)=m\times n
\]首先思考判定條件 \(\text\ge\text\) 的等價判定式。
與 \(mod\) 有關的,除法?除法與向下取整結合,會有:
\[\large\lfloor\frac\rfloor-\lfloor\frac\rfloor-\lfloor\frac\rfloor
\]這個式子與原判定式等價。
那麼再看這個合式,既然有了新的判定式,那麼這個式子也該找個等價式。
發現 \(s(m,n)\) 其實就是在 \(1\) 到 \(m+n\) 個數里篩掉一些數,
也就是:
\[\large\sum_^\varphi(k)\lfloor\frac\rfloor-\sum_^n\varphi(k)\lfloor\frac\rfloor-\sum_^m\varphi(k)\lfloor\frac\rfloor
\]接下來考慮如何計算這個冗長的式子。
暴力列舉肯定不行。
發現這個長式子可以分成三截,算其中一截就行。
我們先從中拉出來一截轉換一下:
\[\large\lfloor\frac\rfloor=\sum_^n[d\mid i]
\]帶入其中那部分式子
\[\large
\begin
&\sum_^n\varphi(k)\lfloor\frac\rfloor\\
&=\sum_^n\varphi(k)\sum_^n[k\mid j]\\
&=\sum_^n\sum_^j[k\mid j]\varphi(k)\\
&=\sum_^n\sum_\varphi(k)\\
&=\sum_^nj\\
&=\frac
\end
\]答案顯而易見了,
\[\large
\begin
&\frac-\frac-\frac\\
&=m\times n
\end
\]
考試題解集合
某天忽然發現自己的blog裡全是考試題解 那麼為什麼不鏈到一篇blog裡呢?避免首頁全是加密blog看起來不大友善,大概也會整齊一點。估計是個大工程但還是作死地開始啦。有些難題是單獨寫的,就不鏈了。密碼仍然是開機使用者名稱 入學年份 兩個班級,希望總是能比過去的自己更用心!2018 4月 14 17...
2020 11 25 考試題解
題目描述 有一圈數,其數目為n個,定義一次操作為每個數變為原數圈中的自己與相鄰的兩個數這三個數的異或和,給出原陣列和操作次數,請算出最後的結果陣列。輸入資料 輸入第一行包含兩個正整數n和k,分別表示陣列數目和操作次數。第二行 n 個整數。輸出資料 僅包含一行n個整數。樣例輸入 3 1 1 2 3樣例...
2020 11 24 考試題解
尋找最少步數,一看就知道是用廣搜。雖然我考場上用的時深搜 迭代加深 每次只能與上下左右的交換,如果直接暴力列舉,肯定超時,考慮優化。1 如果有乙個點和我們要交換的點顏色一樣,就沒必要換了。2 我們可以用狀壓,將每次的判斷從 o 16 變為 o 1 有這些就可以了,要想更進一步,可以用雙向搜尋 不會,...