這一次是交流測試?邊交流邊測試(滑稽
這個題是乙個遞推問題。
首先我們看第乙個格仔,因為它只影響了它的上面和右上面這兩個地方是否有雷。
我們可以分3種情況討論:
1. 第乙個格仔的數字是2;
2. 第乙個格仔的數字是1;
3. 第乙個格仔的數字是0;
顯然對於第1種情況和第3種情況,我們可以確定前兩個空的埋雷情況:
第1種情況就是前兩個空都埋雷了,第3種情況就是錢兩個空都沒有埋雷;
第二種情況我們需要再往下細分:第乙個空埋雷,第二個空不埋雷;第乙個空不埋雷,第二個空埋雷;
我們根據樣例來分析遞推情況:
首先根據第乙個格仔的數字是2,我們可以推斷出前兩個空肯定是有雷的:
接下來我們考慮第二個格仔上的數字對埋雷情況造成的影響,考慮到我們在考慮第 i 個格仔上的數字時,第 1~i 個空已經確定下來了(是否埋雷),所以對於第2個格仔及以後,它真正能確定的空也就是第 i + 1 個,根據樣例可知,第三個空是不埋雷的:
接下來考慮第三個格仔上的數字對埋雷情況造成的影響,前三個空已經確定了,所以只能確定第四個空的情況,根據樣例可知,第四個空是埋雷的:
以此類推,當我們考慮第 i 個格仔上的數字對答案造成的影響的時候,實際上只能確定第 i + 1 個空的情況,對於具體的是否埋雷,我們還要看第 i - 1 ,i 個空的埋雷情況與第 i 個格仔的數字的關係,輕鬆得到如下關係:
我們設 tot 是第 i - 1 ~ i 個空埋了多少個雷,vis [ i ] 表示第 i 個空是否埋雷,a [ i ] 表示第 i 個格仔的數字是多少,則 tot 可以用下面一段**求出:
for(int i=k-1;i<=k;i++) //有了這個 tot 有什麼用呢?它決定著第 i + 1 個空是否埋雷,特別的,還能判斷是否有解!當前考慮第k個格仔上的數字對答案的影響
if(vis[i]) tot++;
若 a [ k ] - tot = 1,說明第 i + 1個空需要埋雷;
若 a [ k ] - tot = 0,說明第 i + 1個空不需要埋雷;
若 a [ k ] - tot >=2,說明無解; //乙個格仔最多放乙個雷,你卻還有兩個以上的雷需要放,肯定無解
若 a [ k ] - tot < 0;說明無解; //明明只需要放 a [ k ] 個,你光前兩個空放的都比 a [ k ] 多了,肯定無解
說句題外話,第四個關係式我當時沒想到,然後就 65 了qwq~
**也很好寫,就是這樣的(其實就是套上去的):
if(a[k]-tot==1) vis[k+1]=1還有乙個小細節需要考慮到:;
if(a[k]-tot==0) vis[k+1]=0
;
if(a[k]-tot>=2) return ; //
乙個格仔最多放乙個雷,你卻還有兩個以上的雷需要放,肯定無解
if(a[k]-tot<0) return ; //
明明只需要放a[k]個,你光前兩個空放的都比a[k]多了,肯定無解
search(k+1); //
找下乙個格仔
我們前面已經說了第 i 個格仔的數字的實際影響是第 i + 1個空,所以說我們遍歷第 n - 1個格仔的時候不就把雷給埋完了?那第 n 個格仔有啥子用?
這裡我就用第 n 個格仔的數字再來判斷一下我們的埋雷情況是否合法,當我們遍歷到第 n 個格仔時,我們需要看一下 vis [ n - 1 ] + vis [ n ] 是否等於 a [ n ] 即可。
so ,我們就可以上完整**啦:
#include#include#include
using
namespace
std;
intn,bj,tot;
int a[10001],vis[10001
];void search(int
k)
if(a[k]-tot==1) vis[k+1]=1
;
if(a[k]-tot==0) vis[k+1]=0
;
if(a[k]-tot>=2) return ; //
乙個格仔最多放乙個雷,你卻還有兩個以上的雷需要放,肯定無解
if(a[k]-tot<0) return ; //
明明只需要放a[k]個,你光前兩個空放的都比a[k]多了,肯定無解
search(k+1); //
找下乙個格仔
}int
main()
}if(a[1]==2) //
分情況討論
if(a[1]==0) search(2
);
if(a[1]==1) //
細分埋乙個雷的情況
}if(bj)
else cout<
no answer
"<
return0;
}
2019 7 9 校內測試 T2 極值問題
這一次是交流測試?邊交流邊測試 滑稽 乍一看這是一道數學題,因為1e9的資料讓我暴力的心退卻。數學又不好,不會化簡式子嘞,咋辦?不怕,咱會打表找規律。考場上真的是打表找出了規律,打表打法好!這裡就不帶著大家一起來打表了,我們是來正正經經的推式子滴。so,這道題就是求斐波那契數列的大水題啦。water...
兒童節校內測T1 逃亡
題目描述 逃亡 escape.cpp c pas 邪狼緊張地說 老大,警察快追過來了,我們快逃跑吧!修羅王傲然道 在我的字典裡沒有逃跑 邪狼內心崇敬地想 老大實在是太有領袖範了 修羅王接著說 只有戰略轉移。邪狼 現在,修羅王和邪狼兩人需要從a地出發盡快到達b地。出發時a地有一輛可帶一人的自動駕駛懸浮...
2017 9 3 校內模擬T1卡片card
題意 有三種字母,可以用兩個不同的換乙個第三種字母,兩個相同的換乙個同種字母 即消去乙個 問最後剩下的字母。第一題顯然是if題,總體來說只有三種情況 1.有三種不同的 輸出 bgr 2.有兩種不同的 3.只有一種字母 輸出這個字母 極醜 1 include2 include3 include4 us...