小 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 41 12 2
2 11 2
3 milk!對每行、每列,兩條對角線各用乙個變數維護(初值為0) ,
輪到小 a 就++對應變數、輪到小 b 則--,同時檢查對應變數絕對值是否為 n。
1 #include2 #include3 #include4 #include5 #includeview code6using
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 }
計蒜客 單調減子串行
從乙個由 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。輸入的第一行為乙個整...