蒜頭君下棋

2021-09-11 23:03:34 字數 856 閱讀 2487

蒜頭君下棋

共一行,兩個整數nn和mm(1 \leq n , m \leq 10001≤n,m≤1000),代表棋盤一共有 nn 行 mm 列。

輸出乙個整數,代表棋盤上最多能放的馬的數量。

樣例輸入1複製

2 4
樣例輸出1複製

4
樣例輸入2複製

3 4
樣例輸出2複製

6
(1)當棋盤只有一行時,棋盤上全放上棋子即可,即sum=m。

即放兩排空兩排。

如圖當n=2時 m與sum 的關係

可以找到規律:當m除4取餘結果為0時 sum=m;

當m除4取餘結果為1時 sum=m+1;

否則sum=m / 4 * 4 + 4;

(3)其它情況下,參考西洋棋棋盤的顏色,馬跳一次一定會從白色格仔變為黑色,因此把所有馬放在同一顏色下即可。

根據圖中黑色和白色位置關係可以得出規律:sum = (n * m + 1) / 2;

#include#includeusing namespace std;

#define ll long long

int main()

if(n==1)

else if(n==2)

}else

cout

}

蒜頭君下棋 DFS

題目鏈結 我們從某一點出發,把這一點當做1,之後開始dfs,他能到達的點 馬子走 都設為 1,再從能到達的點再遍歷,設為1。這樣能把這些點分為1和 1.這是相互衝突的。這樣之後我們還會可能有一些點沒有被遍歷到,我們再找那些等於0,也就是沒有被遍歷到的,再重複過程。最後我們統計1的個數還有 1的個數,...

2018 藍橋杯省賽 A 組模擬賽 蒜頭君下棋

題意 乙個n m的棋盤上讓你放馬,馬和馬之間不能攻擊。問能放多少匹馬。題解 最開始是以為是一道搜尋題。然後一看資料範圍。瞬間懵逼。發現這道題,是個規律題。而且規律錯綜複雜。死活沒有思路。然後我們隊裡的dalao告訴我。你看一眼西洋棋的棋盤你就能明白這道題了。然後我就看了一下棋盤,發現如下規律 當 n...

蒜頭君面試

題目 問題描述 蒜頭君來蒜廠面試的時候,曾經遇到這樣乙個面試題 給定 n 個整數,求裡面出現次數最多的數,如果有多個重複出現的數,求出值最大的乙個。當時可算是給蒜頭君難住了。現在蒜頭君來考考你。輸入格式 第一行輸入乙個整數n 1 n 100000 接下來一行輸入n個 int 範圍內的整數。輸出格式 ...