CF198D Cube Snake(三维空间/增量构造)
生活随笔
收集整理的這篇文章主要介紹了
CF198D Cube Snake(三维空间/增量构造)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
CF198D Cube Snake
n<=50
顯然是一個構造題,然后很容易想到增量構造,可以考慮每次保證一層值域連續,然后再增加一個值域連續的層,就會產生兩個值域連續的正方體,但是只移動頭是不夠的,所以我們還需要移動蛇的尾巴,然后這樣每次添加三個層,就可以構造出一個新的值域連續的正方體。
然后這個代碼實現非常巧妙,每次將添加一層封裝到一個函數中,雖然參數有11個,但是非常清晰,我們需要知道的信息有初始位置(x,y,z),然后位移量(dx,dy,dz)以及平移方向(o)還有修改范圍(n,m),和編號與編號變化量(id,did)這樣就可以描述一次修改了,然后每次位移到m時將dx,dy,dz對應乘-1,就可以實現轉向。
還有對于這個矩形的變換,我們可以利用x,y,z坐標軸移動來處理,比如讓x軸反向或者交換x軸和y軸。
另外一個思路:
每次構造nn(n+1)的長方體,然后增加到(n+1)(n+1)(n+2),然后每次選擇偶數的邊移動就能夠構造到一個大規模的狀態。
總結
以上是生活随笔為你收集整理的CF198D Cube Snake(三维空间/增量构造)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [2020多校A层11.22]party
- 下一篇: CF603D Ruminations o