今天沒吃早餐好難受啊啊啊。
考試之前在打昨天牛客網的一道ds題,要調自閉了。
到考試了還沒有寫完,心態逐漸暴躁。
\(T_1 : \texttt{color}\)
先把 \(k = 1\) 和 \(x = y\) 的點給特判掉。
然后令 \(x < y\),顯然要貪心地去選 \(y\) ,因為每兩個 \(y\) 中間一定會有一個 \(x\),一定滿足限制條件。
\(y\) 的作用其實可以看做是分割 \(x\),然后問題變成了求一段最多有多少個 \(x\)。
顯然 \(x\) 開頭位置越前面越優秀(在一段里面),根據裴蜀定理可以知道最前面的位置其實是 \(\gcd(x,y)\)。
那么最多一段出現次數其實就是 \(1 + \lfloor \frac {y - gcd(x,y)} {x} \rfloor\) 。
心路歷程:
先想到了貪心,然后直接想到了裴蜀定理。
大概 10 min 就做完了,也沒怎么去管這道題了。
期望得分:100 pts
\(T_2 : \texttt{sequence}\)
考慮答案沒有那個平方怎么做。
從左往右邊掃,統計以 \(i\) 為右端點的 \(f\) 之和。
記錄 \(las_x\) 表示上一個 \(x\) 出現的位置。
然后加入一個數 \(a_i\) 就相當於把 \(idx \in (las_{a_i}, i]\) 的 \(f\) 值全部加上 \(1\)。
用區間修改區間查詢的線段樹就能維護。
現在考慮答案帶上平方。
\((x + d)^2 = x^2 + 2dx + d^2\),線段樹維護平方和,區間和,區間長度就能做了。
注意:線段樹里面不要取模,開 unsigned long long
就行。不然好像跑不過
心路歷程:
一開始看到這道題,感覺如果沒有平方的話就直接從左往右掃一遍然后用些簡單的數據結構就能做了。
后面想了想,發現這道題應該也是比較簡單,應該把維護和變成維護平方和就能做了。
然后大概寫了 40 min,后面還寫了暴力拍了一下。
期望得分:100 pts
我現在感覺穩得一批,去到學校的小賣部去買東西吃去了。
浪浪浪,頹頹頹。
\(T_3 : \texttt{match}\)
出題人出來挨打!
這題樹上背包要跑 \(O(n^2)\) 顯然是要利用\(\color{DeepSkyBlue} {這道題}\)的 trick。
第一遍題意感覺很簡單,直接上背包就行。
但是我快打完的時候。。。題目更新了,與原題意完全不同。wdnmd
第二遍題意感覺麻煩一些,可能要容斥之類的。
記錄 \(f_{u,x}\) 表示 \(u\) 的子樹內匹配了至少 \(x\) 對的方案數,最后應該乘上個系數就行。
然后我也很艱難地碼了出來,但是一直都沒調對,開始自閉。
后面發現題目看錯了,游戲的順序是無序的,轉移時候不需要乘組合數。
最后調出來了大概是 11:59(極限交題),但是。。。Online Judge 的辣雞頁面上不去了。
期望得分:一分也沒有。
結論:
- 寫了兩題不要感覺自己很穩,要放平心態。
一定要提前吃早餐。