csp-s模擬測試112 & csp-s模擬測試113


考前兩天模擬。

Day1直接炸飛,T1浪費的時間太長,對拍+調試了一個多小時但復雜度還不能過,最后5分鍾想出來了解決方案但是已經打不出來了。T2讀入出了事故RE0。T3打了假貪心。

Day2心態幾乎也是爆炸。T1做了一個小時,也沒法對拍。T2調試了一個小時后發現算法偽了,瞬間崩潰。猶豫了一會去打T3,一看T3不好打,暴力也難,又回過頭考慮T2,試圖基環樹dp。終於最后發現在環上貪心就行了不用dp,然后T2過了對拍就只剩不到20分鍾了。T3 dfs難打,想騙分,最后也沒騙到。

D1T1:

  首先一個貪心思路:每次給三種顏色的氣球排序,從最多的氣球出$2$個,次多的出$1$個裝飾一張桌子,最終特判$(1,1,1)$。暴力來是$O(N)$的。考慮優化(其實隨便構造的)。先取三種氣球數量$min$值,即用$(1,1,1)$裝飾,把剩下兩色氣球充分利用(具體需要大力討論,比較麻煩),最后使得只剩為$(1,1,0)$或$(x,0,0)$的情況(前者無貢獻),用最后的$x$與$min$個$(1,1,1)$再湊$(1,2,0)$的情況,這樣構造了最優解。復雜度$O(1)$。

D1T2:

  有向圖判環。實際考點:換行符linux下'\n',windows下'\r\n'。其實讀入時判getchar()!=' '就可以了。

D1T3:

  考慮每一個分部的貢獻。設一個任務由$cnt$個分部接管,對於每個分部,從自己到總部共$cnt-1$次,從其他部到自己共$cnt-1$次,所以一個任務的總貢獻為$(cnt-1)*\sum (dis[0][i]+dis[1][i])$,那么問題轉化為:集合權值為總和$\times$大小,划分集合,使得集合權值和最小。對$dis[0][i]+dis[1][i]$從小到大排序,那么選一段連續區間一定最優。就有$dp:f[i][j]$表示第i個集合划分到了$j$處的最小費用。轉移:$f[i][j]=f[i-1][k]+(j-k-1)*sum(k+1,j),k<j$。是$O(N^3)$的。但是考慮每一個集合前有一個系數,這個系數越大,后面的值應小一些才優。所以最終的集合划分一定是:$(dis[0]+dis[1])$越小的一段越長。我們已經排序,所以越靠前的集合越長。所以從上一層轉移,上界$k$*段數應小於$j$,這樣轉移一層是$\sum \limits_{i=1}^N \frac{N}{i}$的,是$N \ln N$,總復雜度$O(N^2 \ln N)$。

D2T1:

  面積一定,越圓的東西一定周長越小(應該是個事實吧)。正六邊形是面積一定時最優的。任意一種方案都可以調整為六邊形。先找到能圍住$N$的最小正六邊形,二分邊長檢驗$3N*(N+1)+1>=N$,當然手解不等式應該可以$O(1)$。然后縮小正六邊形,牆縮小一,容積縮小$len+1$(第一次縮),$len$(再縮),然后卡住$N$就行。$O(\log N)$。

D2T2:

  對每一個商品向它的$f[i]$連邊,邊權為$d[f[i]]-c[i]$,如果為負就不連(穩虧不賺)。變成幾個聯通塊,是基環樹或樹。對於樹上的點,他自己的數量一定是全部被最大邊的一頭購買最優(它的貢獻只能通過被彈出來實現)。而且對於樹上的點,一定可以按拓撲序,所以不用考慮順序。對於環上的點,由於購買一件物品時先檢驗本品是否為空所以我們先不買斷,都留一個。最后考慮一下,如果沒有樹邊,環上的點最終一定剩下一個不被彈出,但有樹邊的話還可以彈出。那么在環上枚舉最后(將)被彈出的點,每一種方案的貢獻為換上點貢獻之和-這個點的貢獻+(如果這個點連了樹邊)這個點被樹上點彈出的最大貢獻。枚舉復雜度是邊數$O(N)$的。

D2T3:

  暴力做法:枚舉子串$p$,$dfs$不斷消去子串,直到最后為空。這樣用$string$比$char[]$方便,但我並不太會$string$。趁此機會學了一下。

  正解是$dp$。同樣枚舉$p$串,然后區間$dp$判斷。$f[i][j]$表示$s$串$[i,j]$區間能否匹配p,匹配定義為:能消完,或者消到最后剩下$p$的前綴。轉移分為兩種:添一個字符,添一整$p$串。僅第一種是不全的,因為無法處理$p$串插入在中間的情況,所以還要整串轉移一下。總復雜度$O(N^4)$?(我並沒有記憶化所以較慢,但其實很難到上界)。

  此外調試時注意到了三目運算符$:$的兩邊必須是嚴格相同類型的,左$void()$,右邊也必須是,有時候不一樣了編譯不報錯但會RE非常難受。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM