計蒜客 n 子棋

2022-06-19 03:45:09 字數 1357 閱讀 8415

小 a 和小 b 在玩 nn 子棋, nn 子棋遊戲的規則是,兩人在乙個左上角是 (1,1)(1,1),右下角是 (n,n)(n,n) 的 n \times nn×n 棋盤中交替落子,只要有一方的 nn 個棋子在同一行或者同一列或者同一條對角線上,對方就輸了。

遊戲由小 a 先手,一共進行了 mm 回合,請你來當裁判,幫他們裁定勝負。

遊戲結束的條件是:

一旦滿足上述任意乙個條件,遊戲立即結束,後續回合無效。

第一行兩個整數 n,mn,m ,表示棋盤大小和回合數 。

接下來 mm 行,每行兩個數 x,yx,y,表示當前輪到的人會在第 xx 行第 yy 列放乙個棋子。

output

輸出一行,包含乙個整數 xx ,表示遊戲結束的回合,和乙個字串 ss 表示遊戲結果,用乙個空格隔開。

若小 a 贏了 ss 為"milk!";小 b 贏了 ss 為"juice!";否則 ss 為"drawn!"

對於前 10\%10% 的資料,保證 n=1n=1;

對於前 30\%30% 的資料,保證 1\leq n \leq 21≤n≤2;

對於前 70\%70% 的資料,保證 1\leq n \leq 501≤n≤50;

對於前 90\%90% 的資料,保證 1\leq n\leq 5001≤n≤500;

對於 100\%100% 的資料,保證 1\leq n\leq 10^5, 0\leq m \leq \min(3\times 10^5, n^2)1≤n≤105,0≤m≤min(3×105,n2)。

保證最初棋盤是空的且遊戲結束前所有操作均合法。

input

2 4

1 12 2

2 11 2

3 milk!
對每行、每列,兩條對角線各用乙個變數維護(初值為0) ,

輪到小 a 就++對應變數、輪到小 b 則--,同時檢查對應變數絕對值是否為 n。

1 #include2 #include3 #include4 #include5 #include

6using

namespace

std;

7const

int n=100000+100;8

intn,m,x,y;

9int a[n]=,b[n]=,cnt1=0,cnt2=0;10

int f=1;11

intmain()

1229

}30 cout

"<

drawn!

"<

31return0;

32 }

view code

計蒜客 單調減子串行

從乙個由 nn 個整數排列組成的整數序列中,自左向右不連續的選出一組整數,可以組成乙個單調減小的子串行 如從 68,69,54,64,68,64,70,67,78,62,98,87 68,69,54,64,68,64,70,67,78,62,98,87 中我們可以選取出 69,68,64,62 69...

計蒜客 2n皇后問題

題目描述 給定乙個 n n 的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入 n 個黑皇后和 n 個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條對角 線上,任意的兩個白皇后都不在同一行 同一列或同一條對角線上。問總共有多少種放法?n 小於等於8 輸入格式 輸入的第一行為乙個整數 n ...

計蒜客 2N皇后問題

給定乙個 n n 的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入 n 個黑皇后和 n 個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條斜線 包括正負斜線 上,任意的兩個白皇后都不在同一行 同一列或同一條斜線 包括正負斜線 上。問總共有多少種放法?n 小於等於 8。輸入的第一行為乙個整...