题解:P12063 [THUPC 2025 决赛] 我的围棋

· · 题解

闲话

这怎么这么像第29届LG杯

言归正传,先放思路

思路

围棋的规则是黑棋先走,也就是单数步的时候是黑棋下,双数步的时候是白棋下。再定义两个变量,作为双方提子的数量,注意,如果棋盖已经被塞爆了,一定要结束循环!!!

code:

#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[100010];
long long bsum=0,wsum=0;//定义双方提子数量的变量,bsum代表黑棋的提子数,wsum代表白棋的提子数,注意不开long long会爆!
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(i%2==1){//如果黑棋下
            bsum+=a[i];
        }else{//白棋下
            wsum+=a[i];
        }
        if(bsum>m){//黑棋棋盖塞爆了,那么白棋赢
            cout<<"White";
            return 0;//结束程序
        }if(wsum>m){//白棋棋盖塞爆了,那么黑棋赢
            cout<<"Black";
            return 0;//结束程序
        }
    }
    cout<<"Draw";//两边都没赢,所以平局
    return 0;//好习惯
}