Codeforces Global Round 12 C1 C2. Errich-Tac-Toe 思维构造 好题
傳送門
題意: 給了如下規則,上面三個只要出現一個情況就是非平局,現在給你個字符矩陣,讓后其中XXX字符有KKK個(hardhardhard版本XXX和OOO一共KKK個),每次操作可以將XXX變成OOO,OOO變成XXX,用不超過?k3?\left \lfloor \frac{k}{3} \right \rfloor?3k??次操作將其變成平局。
思路:
對于easyeasyeasy版本:
觀察一下上面四個圖片都有什么特點,可以發現他們都是橫豎的情況連續個數>=3>=3>=3個,那么一個正方形除了橫豎還有什么呢?顯然我們還有斜著的。考慮將斜著的染色,由于要確保連續的個數<3<3<3,那么我們可以每三斜分一個組,選出其中一個位置全都修改成OOO即可,這里直接盜用題解的圖了。如下圖,我們把紫色或者紅色或者綠色全部改成OOO(任選一種顏色)。
這樣怎么保證操作數<=?k3?<=\left \lfloor \frac{k}{3} \right \rfloor<=?3k??呢?假設三種顏色中XXX的個數為x0,x1,x2x_0,x_1,x_2x0?,x1?,x2?,那么x0+x1+x2=kx_0+x_1+x_2=kx0?+x1?+x2?=k,所以min(x0,x1,x2)<=?k3?min(x_0,x_1,x_2)<=\left \lfloor \frac{k}{3} \right \rfloormin(x0?,x1?,x2?)<=?3k??,得證。
對于hardhardhard版本:
接著easyeasyeasy版本考慮,現在無非是初始狀態多了個OOO,我們依舊按照斜著的分成三種顏色0,1,20,1,20,1,2,我們可以使其中兩種不同的顏色其中一種全部XXX修改為OOO,另一種的全部OOO修改為XXX,這樣就可以滿足條件了。依舊是盜了題解的圖。
下面證明一下為什么操作數<=?k3?<=\left \lfloor \frac{k}{3} \right \rfloor<=?3k??。
假設ai,ja_{i,j}ai,j?中i,ji,ji,j為選的兩個顏色,那么a0,1+a0,2+a1,0+a1,2+a2,0+a2,1=2ka_{0,1}+a_{0,2}+a_{1,0}+a_{1,2}+a_{2,0}+a_{2,1}=2ka0,1?+a0,2?+a1,0?+a1,2?+a2,0?+a2,1?=2k,那么ai,j<=?2k6?=?k3?a_{i,j}<=\left \lfloor \frac{2k}{6} \right \rfloor=\left \lfloor \frac{k}{3} \right \rfloorai,j?<=?62k??=?3k??,得證。
這里只放個hardhardhard版本的代碼好啦。
總結
以上是生活随笔為你收集整理的Codeforces Global Round 12 C1 C2. Errich-Tac-Toe 思维构造 好题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年度训练联盟热身训练赛第一场
- 下一篇: 干薄荷叶的功效与作用、禁忌和食用方法