7.17 ZROI-Day4模擬賽
7.17 ZROI-Day4模擬賽
賽時歷程
看T1,“四聯通”,什麼意思呢?然後我隨手畫出了幾個俄羅斯方塊,欸,突然俄羅斯方塊都是“四聯通”的,哦,而且是“四聯通”的所有情況,那這題豈不是得叫“俄羅斯方塊”?然後我又畫了一會兒,發現這個“四聯通”的意思好像是大於等於四個塊聯通,嗯,DP的思路大概有了,記錄一下這一列的兩個狀態,上一列的兩個狀態,好像還得記錄聯通的個數,寫著寫著變成了7維DP,除錯了巨大久,分類討論非常多,然後,終於過了第一個樣例了之後,過不了第二個樣例,,然後看T2和T3也不像好搞的樣子,甚至暴力也不好搞。
嘗試硬著頭皮寫暴力了?但是效果可能不好,反正沒寫出來。
剛到最後的T1抱玲了,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。
賽後發現
我是傘兵。T1題意看錯,後兩題80分暴力沒拿。
技術總結
T1
考慮選 \(i\) 個連塊,即上下都塗黑的塊。
連塊不能相鄰,上下在中間的空擋最少需要填充(k-1)/2,即min(A,B)-k>=(k-1)/2
考慮外邊的塗色卡邊界的問題,兩端要剩下的位置要大於等於剩下的塗色
記錄兩個值,一個是所謂的放置整塊的方案T,一個是整塊內排布的方案sum
T=(n-S+1),sum就需要分類討論,不選擇連塊,即k=0那麼二者只有一個存在的情況,sum=1,否則sum=0
對於k=1,如果二者擺完連塊後會剩下0個,那麼就只有一種情況,sum=1,否則左右可以更換一次,sum=2;
對於其它的情況,考慮k為奇數還是偶數
如果k是奇數,那麼$sum=2C(A-i,i/2)(B-i,i/2); $
考慮\(i\)為奇數會有\(i/2\)下取整個空擋,剩下了\(A-i\)個自由兵,這些自由兵就在這\(i/2\)個空擋中選擇,可以理解為選擇\(i/2\)個和連塊緊貼,上下顛倒一次所以乘2。
否則 \(sum=C(A-i-1,i/2-1)*C(B-i+1,i/2)+C(B-i-1,i/2-1)*C(A-i+1,i/2);\)
因為這裡有奇數個空擋,所以說需要分開考慮誰選擇小的那批空擋
則這次的方案是T*sum
T2
前10分是\(q,n,m\le 1000\) 的“暴力”,線段樹區間賦值就能 \(O(qmlogn)\) 的完成了。
然後是性質分,只有其中一個修改操作的,只有swap的話,那不管怎麼換,答案都是0,這是閉著眼都能拿到的20分。
接下來是正解。
T3
考慮50分暴力分,考慮有 \(i\) 個放入了普通盒子,一共有 \(j\) 個普通盒子,那麼這個方案數就是\(C(n,i)*S(i,j)\) 這個時候就有 \(n-i\) 個放入了飯盒裡,所以這次對於 \(ans_j\) 的貢獻就是 \(f[n-i]*C(n,i)*S(i,j)\)。然後遞推斯特林數和組合數就能夠得到50分了。