D-F
阿新 • • 發佈:2022-12-06
D. Grid Xor
題意:有一原矩陣a,令a中每個元素為其相鄰元素(共享一條邊)的異或和,形成矩陣b。現給出矩陣b,求原矩陣a中所有數異或和。
解:異或的性質
已知a^b^c^b=a^c,也就是一個數在一個異或和中出現奇數次在最終答案中出現一次,出現偶數次會被抵消。那麼就變成了給出一些格子的異或和,用這些格子拼出一個正方形。一排一排地拼,(用ps開兩個圖層)手玩一下會發現每次剛好能拼出兩行,而題中n給的剛好是偶數,對上了。
E. Range = √Sum
題意:給定n,試構造一個長為n的序列,使得最大值與最小值差的平方恰為序列所有數之和。
解:從中間到兩邊,構造一些對稱的東西
開始試圖確定兩邊,然後往中間填數。進行一些暴力計算未果,決定換個思路。已知n2
F. Anti-Theft Road Planning
題意:給定n*n個點的方陣,相鄰點之間建邊,形成一張正方形網格狀的圖,沿某條路徑從一個點到另一個點的花費為經過所有邊權值的異或和。現在有一個人初始在(1,1),正在這張圖上亂走,並不時通報當前花費;每通報一次,花費清零。要求構造一種給路徑賦值的方案,使得給出任意花費,能唯一確定到達了哪個點,並且所有路徑權值之和不超過48000.
解:格雷碼
顯然給每個點一個不同的編號,令兩點之間路徑為它們的異或值即可滿足要求,但這麼做不能保證權值和最小。要想路徑權值和最小,也就是兩兩異或值要小,即兩個數二進位制表示下區別最小,可以用格雷碼。但格雷碼是一維的,需要亂搞一下。(開啟題解)分奇偶位進行格雷碼的構造,即對於第一行,格雷碼原來是00, 01, 11, 10的,現在中間塞個0,變成0000, 0010, 1010, 1000;對於第一列,其奇數位形成格雷碼;對於a[i][j],其編碼為a[1][j] | a[i][1],即可完成拓展。(學會了,關閉題解)