【牛客 - 210A】遊戲(思維,腦洞)
題幹:
BLUESKY007,fengxunling和dreagonm三個人發現了一個畫素遊戲,這款神奇的遊戲每次會生成一個nxm的網格,其中每一個格子都被隨機染色為R,G,B三種顏色之一,每次都可以選擇任意一個非B顏色的格子進行一次操作,每次操作都會滿足以下規則:
1.操作的範圍為從整個網格的左上角到選定方格的矩形區域
2.操作區域內所有方格都遵循變換
3.第一個不能執行操作的人為失敗者,且按操作順序在失敗者之前的人取勝
為了能讓BLUESKY007感到快樂(照顧到BLUESKY007是個蒟蒻),fengxunling和dreagonm的操作都儘可能的讓BLUESKY007取勝,她們想知道在操作順序為
輸入描述:
題目有多組資料
第一行一個整數t,表示資料組數
對於每組資料,第一行兩個整數n,m,接下來n行每行m個字元
輸出描述:
輸出共t行,每行一個字串表示答案
示例1
輸入
2
3 3
RGG
BBG
RRR
3 3
GRB
RGR
RBG
輸出
dreagonm
fengxunling
備註:
對於的資料,
對於另的資料,
對於的資料,
題目大意:
每次都可以選擇一個非B格子(i,j),使得(1,1)~(i,j)所圍起來的矩形都變化一次,問操作到不能操作的時候,誰輸了。
解題報告:
又被智商壓制了、、、看來真的是玩不過OI的啊,初中高中生的腦子就是不一樣、、、
-----
其實只需要看左上角就行了,因為題目描述寫的很清楚,三個人的操作都是為了
BLUESKY007能贏,所以遊戲一定會結束,那麼當橫縱座標最大的非 B 顏色方格變為 B 顏
色時,可操作的方格範圍顯然是趨向收斂的,又因為操作規則的要求,左上角的方格在每
次操作中都會按規則進行變換,當可操作範圍收斂到左上角且左上角變為 B 顏色時,遊
戲結束,所以無論中間的操作是怎樣進行的,最終左上角的方格一定會變為 B 顏色,而且
進行操作的人數和操作變換長度相同,所以我們只需要判斷左上角方格的顏色即可。
-----
以上是標準題解,簡單來說,結束時一定是所有的都變成B了,那麼左上角就是B,因為每次都參與變化了,又恰好設計了RGB三色且是三個人玩,所以只跟最開始的左上角格子有關。。那些儘量讓誰誰誰獲勝啊啥的一切策略都是沒用的擺設、、、
其實你要知道啊,有的時候題意之所以晦澀難懂,其實就是想讓你跟隨他想讓你想的思維方向。你想遠了,自然就覺得題意難懂。其實照著這個思路如果是我造題,題意也得這麼寫,就挺清楚了啊:比如告訴你一切操作就是為了讓某個人贏,其實是為了告訴你這遊戲是收斂的,結果是存在的。
AC程式碼:
#include<bits/stdc++.h>
using namespace std;
char maze[1000 + 5][1000 + 5];
int main() {
int t;
cin>>t;
int n,m;
while(t--) {
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++) {
cin>>maze[i];
}
if(maze[0][0]=='R') puts("dreagonm");
else if(maze[0][0]=='G') puts("fengxunling");
else puts("BLUESKY007");
}
}