T1 怎麼能花 1.5 個小時的啊。tmd 這玩意不是手玩 1min 直接就做完了嗎。
T2 的話注意【欽定轉移 1 個方向】,區間 dp 很好寫,差分也很典。
T3 是個康託展開。然後發現排列進位制數你可以算初始和末尾的狀態。末狀態的得出,你考慮最後面每一位自己動,後面不變的次數是 \(n!\) 級別的,按照這個模擬即可。
然後知道一個排列的初末狀態過後就可以數位 dp 算:兩個狀態之間的所有狀態在排列進位制數下的數位和。這個你考慮記錄 [ans, num],合併即可。
T4 不帶修就用 ds 最佳化建圖,然後縮點,統計 in0 點即可。帶修估計不能這樣了,雖然改的邊是 O(1) 級別但是也不好維護,所以你考慮另一種方法。
挖掘性質。這個題模型很簡單所以考慮序列上。分段。
每一段:每個元素都在這裡面全部出現,並且操作一次即可消完(也就是區間有交)。
這玩意分段由於每個數有 2 次,容易想到異或 hash。那麼每次修改必定最多影響 2 個段,這個似乎就比較好做了。第二問還沒想。
T1 這種 dp 最近一個月做了 3 次。通常都是透過 dp 來保證貪心的正確,主要原因是 dp 有一定的限制,貪心可以保證限制一定在狀態的正確位置。(通俗:假設 2 個最終都要選,那麼誰一定先選,就排到前面去,此時 dp 會和前面決策掛鉤)
比如這個題推完式子發現最影響決策的是 \(a+b\)。於是 \(a+b\) 排序,大的必定在前面用了。於是做完了
T2 是簡單的算機率,稍微容斥一下就好了,下次做快一點。
T3 透過 V=E+1 的轉化就變成了掃描線,甚至不用建圖,但是沒搞懂 cdq。
T4 考慮列出 dp = max(dpto + w, val(i)),val(i) 表示刪除了這條邊過後的最短距離。
樹上並查集,合併。
說點閒話。
現在考的都是些什麼題?人類智慧題。
板題還會有嗎。會,但不多。
某位努力型選手真的只是瞎努力才成功的嗎,不,他一直用做題來提升自己的思維,注意,套路和思維是不一樣的,套路誰不會誰必定淘汰。
我時常感慨時間不夠,但是明明那麼多頹廢的時間可以利用偏偏我還是要選擇去浪費,這是怎麼回事啊。
我一直懷疑自己的程式碼能力。其實這真的和做題習慣有關。平時做題就特別考慮題解的實現,而忽略了自己coding的練習過程。這因如此才使我創造了 1h 切綠的神話吧。
而且有些題感覺完全顯然的,為什麼每次都要做這麼久啊,我做 1h,別人玩 30min 然後做 25min 甚至在我前面,真的想不通啊。要廢了。