省選模擬7

2022-03-26 20:19:14 字數 624 閱讀 5241

原題,但是思路很好。

看到這種區間修改的操作可以想一想差分,將原序列差分之後我們得到了不超過2k個位置,那麼就下來的問題是:給定若干操作,每種操作可以將兩個距離為$a[i]$的點同時取反,求將整個序列變成0的最小操作次數。

發現每個操作只會將兩個位置同時取反,可以用bfs求出來任意將兩個點同時取反且不改變其他點狀態的最少步數,之後狀壓將這2k個點配對即可。發現每個點必然都會被合併,所以每次轉移只要列舉未被選擇的最小的點即可。

考場被我用$o(nq)$暴力水過去了。大約是暴力處理出來任意乙個位置的回文半徑,之後暴力掃詢問區間統計答案。發現這個東西可以很容易的用線段樹優化為區間賦值,單點查詢某個位置的字母,區間查詢一段區間的和,然而沒打。

乙個結論:選k個物品的最優方案必然包括選$k-1$個方案中的所有物品。

可以有乙個簡單的$o(n^2)$暴力:按照a排序後,$f_$表示前i個物品中選出j個的方案數,那麼$f_=max(f_+a_*(j-1)+b_,f_)$。

根據上面那個結論,必然存在乙個位置j使得這個j之前dp轉移取後一半,之後取前一半。

發現這個位置對應著dp陣列的差分與當前物品價值的大小關係,所以可以考慮用平衡樹維護差分序列,在平衡樹上二分就可以得到這個最優位置,那麼只需要支援在原序列中插入乙個數,區間加法即可。

省選模擬 19 09 11

ps.博主趁資訊課摸魚考的暴零模擬 看門人憑感覺就知道是長鏈剖分,將路徑查分一下,dis u di sv 2 dis lc adis u dis v 2 dis disu disv 2 disl ca 維護fu,if fu,i 表示u的子樹,深度為 i 的點的 dis disdi s最大值 考慮如何...

省選模擬96

容易發現當 k 3 時無解。然後容易證明當 k 3 時,只有 m 3 才是有解的。然後直接做不好做,考慮欽定然後容斥出合法方案。對於 k 3 列舉乙個點,然後計算另乙個的方案數。其他情況類似,欽定滿足條件的角,然後容斥。然後對於每乙個 o n 的式子用組合恒等式大力化簡就可以做到 o 1 了。考慮每...

省選模擬86

首先考慮基礎的dp定義,那麼發現轉移需要的係數只和dp是奇數的點的個數有關,所以將這個東西記錄在dp狀態中就行了。然後推一下dp轉移,發現轉移係數和奇數的點的個數沒有關係,只與是否存在這樣的點有關,所以用01來記錄就可以了。考慮用總方案減去不合法的方案,也就是1號點能到達的點和2號點能到達的點沒有交...