NC24157. Pyramid
描述
输入描述
第一行两个整数--棋盘的大小和候选标记单元格的个数。然后行,其中第行为两个整数--第个候选单元格。保证任何一个候选单元格都既不为也不为。
输出描述
对于每个候选单元格输出一行:
输出"Alice",如果选择该候选单元格作为禁着单元格Alice会获得游戏胜利。否则输出"Bob"。
示例1
输入:
3 2 3 1 3 2
输出:
Alice Bob
说明:
示例2
输入:
631 1 589 72
输出:
Bob
C++14(g++5.4) 解法, 执行用时: 698ms, 内存消耗: 4536K, 提交时间: 2019-09-10 18:05:08
#include <bits/stdc++.h> #define A cout << "Alice\n"; #define B cout << "Bob\n"; using namespace std; int n, q; int main() { cin >> n >> q; for (int x, y, i = 1; i <= q; i++) { cin >> x >> y; if (n % 2 == 0) { if (x > 3 && x % 2 == 0 && y == 2) B else A } else { if ((x == 3 && y == 1) || (x > 3 && x % 2 == 1 && (y == 1 || y == 3))) A else B } } }
C++11(clang++ 3.9) 解法, 执行用时: 98ms, 内存消耗: 1528K, 提交时间: 2020-03-25 14:33:57
#include<bits/stdc++.h> using namespace std; const int MAXN=1e5+5; int main() { long long n,T,x,y; cin>>n>>T; while(T--) { scanf("%lld %lld",&x,&y); long long f=(n-1)%2; if((n-x)%2==0&&(n-y)%2==0&&y<=3&&x!=y) f=!f; printf(f?"Alice\n":"Bob\n"); } return 0; }