原创 noip退役記

好久沒寫過遊記了,既然退役了,就寫個總結吧。 csp之後有點頹吧,主要是心態爆炸了,平時也不怎麼做題了,但模擬賽還打打,不過考試前一週還是傳統藝能沒打模擬賽,最後三天打了打模板,當然沒有用到。 開考之後半小時看完題,t1感覺是一道不太難的題

原创 III-I

原创 分塊初步學習

例題:區間加,區間查詢 下文使用 \(m\) 表示查詢次數,以示區分。 樸素做法 \(O(m\times n)\). 我們發現需要優化後面這個 \(n\). 考慮分塊。將整個區間打成 \(\lceil n / \sqrt{n} \rcei

原创 最小 & 次小生成樹淺談

約定:以下用 MST 表示最小生成樹,SeMST 表示次小生成樹。 一、MST MST 有兩種較常用的算法,分別是 Kruskal 算法和 Prim 算法。由於一些原因,這裏只介紹 Kruskal 算法。 Kruskal 算法是一個貪心算

原创 線段樹淺層學習

AcWing 246. 區間最大公約數 題意簡述:區間加,區間 gcd. 解: 根據更相減損術,有 \(\gcd(x,y)=\gcd(x,y-x)\). 一般地,有 \(\mathbf{\gcd(a_1,a_2,\cdots,a_n

原创 【CSP-S 2019】格雷碼 - 題解

令答案爲 \(g(n,k)\). 根據題意可知,\(g(1,0)=0,g(1,1)=1\). 我們可以通過遞歸的方式得到答案。 具體地,當 \(k<2^{n-1}\) 時,\(g(n,k)=0\sim g(n-1,k)\). 當 \(k\g

原创 不要爬這篇文章

回顧自己初一一年,感覺自己從一個低的起點,走着走着,走到了一個有點高的位置,疫情,走着走着,又走下來了,暑假,以爲自己又走上去了,沒想到又回到了原來的高度。 有意思。

原创 破事氵題

Luogu P4281 求三個點的 LCA。其實就是模板的變式。 一種暴力求得三個點的 LCA 的方法是: 設三個點爲 \(x,y,z\),求出 \(\text{LCA}(x,y),\text{LCA}(y,z),\text{LCA}(x,

原创 CF1382B - Sequential Nim 題解

先特判所有數都爲 \(1\) 或都不爲 \(1\) 的情況。 所有數都爲 \(1\):判斷奇偶性; 所有數都不爲 \(1\):先手必勝,原因略。 對於其餘情況,正難則反。 設 \(\text{flag}_i=1/2\) 爲取走第 \(

原创 CF1360D - Buying Shovels 題解

題目大意 有 \(k\) 種包裹 第 \(i\) 種包裹中有 \(i\) 個物品(\(1\le i\le k\)) 需要購買 恰好 \(n\) 個物品 只能購買一種包裹,但是可以購買無數次該包裹 問最少的購買次數 解法 設 \(m=\m

原创 NOI Online 2020-2 S 遊記

早上洗把臉進考場(霧 看題。T1 似乎是道數學先跳了。於是去看 T2,花了一點時間寫了個 \(O(n^3\log n)\) 的垃圾暴力。 然後開始在 T1 和 T2 之間反覆橫跳。感覺這個 T1 有點東西於是去推了推。 結果瞎打了一波草稿之

原创 CF1334B - Middle Class 題解

大力猜結論的貪心題。 先把 \(a\) 數組升序排序一下。 弄兩個預處理數組。\(rich[i]\) 表示排序後前 \(i\) 個人中富人的個數,\(s[i]\) 表示排序後後 \(i\) 個人錢數的後綴和。 於是枚舉 \(i=0,1,\c

原创 [SHOI2002]N的連續數拆分 題解

一道比較簡單的數學題。 題目問我們正整數 \(n\) 可以被多少組連續的正整數拆分。那麼這些連續的正整數會組成一個公差爲 \(1\) 的等差數列。 設數列的首項爲 \(a\),末項爲 \(b\),則該等差數列的和爲 \(\dfrac{(a+

原创 LOJ #10134. 「一本通 4.4 練習 1」Dis

做這道題需要知道一個性質:樹上 \(x,y\) 兩點的距離爲 \(dis(x)+dis(y)-2dis(LCA(x,y))\),其中 \(dis(i)\) 表示 \(i\) 點離根節點的距離,\(LCA(i,j)\) 表示 \(i,j\)

原创 ABC160D - Line++ 題解

題意:給出 \(N,X,Y\)。有 \(N\) 條無向邊: 對於 \(i=1,2,\cdots,N-1\),連一條從點 \(i\) 到點 \(i+1\) 的無向邊。 連一條從點 \(X\) 到點 \(Y\) 的無向邊。 對於 \(k=1