上午炸完了,應該好好總結。
整場比賽所有的時間都花在 T3 上了:
-
20 分鐘就猜出一個結論,過了小樣例。高興極了。
-
過了半個小時意識到結論錯了,於是趕緊寫暴力程式打表。
-
又過了 1 個小時才修補出另外的結論。然後花了 1 個小時實現並修補。結果大樣例死了。關鍵是這個結論一看就不像是對的。什麼 mod 32 是多少多少是輸。為什麼我會認為這是對的呢?
-
最後 1 個小時就完全破防了,看了其它兩個題沒什麼思路,暴力也不想寫了。
賽後兔子說我的結論是正確的,但是不完全,因為小資料的結論不一定能推到大的。
而且正確的結論是一個非常簡短的形式,一看就應該是正確的。
這也警告我:某些結論題不能根據小樣例盲目猜測,尤其是當你的結論已經非常複雜了。一定是打表和推導互相促進的。這裡就不寫二元作文了。比如透過打表得知 xyz 不等時必輸,轉而進行推導:x=y 的時候如何贏?這是容易的,根據相等則輸就可以推導。
其實最後結論得出來過後基本上是秒出 map 的雙 log,trie 的單 log 最佳化的做法啊!!!
然後是 T2:反映出對 dp 的徹底不熟練!為什麼加了個【限制】的套子你就不會了???
題解告訴我狀態過後,我花了半小時就做出了 3 次方暴力。關鍵是:這個狀態設計和剛過去的 CSP-S T3 的狀態類似!所以我到底幹嘛???
並且現在還是沒有做出最佳化 dp。但這是必須做的。我需要接下來專門花時間對 dp 設計及其常見最佳化進行復習。畢竟這東西太重要,佔比太大了。
說一下 T4 吧。最後的計數還是要思考一點東西的,雖然程式碼很短。八中神機!1s 平方過百萬!(帶 1/3 常數)
說一下計數的部分。題目給了限制是值域連續,那麼根據字尾排名的性質,必然是 \(|s[sa_i]-s[sa_{i+1}]|\le 1\),否則中間那個數的字尾會將 \(sa_{i+1}\) 代替。
其實就是考慮能否有 s 這兩位相等的情況,要一直比較後面下去了?由於此題已經給了 sa 陣列,我們也就知道了 rk 陣列,那麼比一下 \(rk[sa_{i}+1]\) 和 \(rk[sa_{i+1}+1]\) 即可。真是巧妙啊!!!
以後很多題都可以點開大樣例驗證答案是否是 2 的冪次。可以避免向 dp 等高複雜度方向的錯誤思考。
lhy 不要抄我 T4 程式碼了。
還有一道 duel 的題:https://www.luogu.com.cn/problem/CF1204D2
觀察樣例發現只會把 1 變成 0。有一個平方做法就是每次修改一個 1 看是否所有 dp 值改變了。最佳化顯然要注意到值域只有 0 和 1。需要檢查改成 0 之後答案會不會變大:
分析留到明天再寫,明天可能時間會多一些。核心就是分別討論前後面,對於前面暫時不合法,但是你一定可以一直把 1 變 0。
當然一天就只學習了這些,感覺真是自責啊,明明頹廢的情況已經明顯少於前面了(
目標是必須定的:現在的當務之急:複習 dp。可能後面會開始專攻圖論?
下午體測沒什麼好說的,居然跳遠還是能滿,以及 50m 居然進 7s 了。雖然是 6.98s 並且可能有所誤差。(gouhan 搶跑!被我反超())
晚上不知道高二幹嘛去了。但是在看 hxy 演唱會相關物料!
我畢業後一定會來的,你說好了要巡演。我一定來的!