竞赛讨论区 > 求助B题,还有哪里没有考虑到啊呜呜呜
头像
Duanzishou134
发布于 02-02 19:45
+ 关注

求助B题,还有哪里没有考虑到啊呜呜呜

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
    int t;
    cin >> t;
    while(t--)
    {
        int n;
        cin >> n;
        int right = 2, left = 2, mid = 3;
        map<pair<ll, ll>, bool> mp;
        for (int i = 0; i < n; i++){
            ll r, c;
            cin >> r >> c;
            mp[{r, c}] = 1;
            if (left && c < 0){
                if (r == 1 && (mp[{2, c}] == 1 || mp[{2, c + 1}] == 1 || mp[{2, c - 1}] == 1)) left = 0;
                else if (r == 2 && (mp[{1, c}] == 1 || mp[{1, c + 1}] == 1 || mp[{1, c - 1}] == 1)) left = 0;
                else left = 1;
            }
            else if (right && c > 0){
                if (r == 1 && (mp[{2, c}] == 1 || mp[{2, c + 1}] == 1 || mp[{2, c - 1}] == 1)) right = 0;
                else if (r == 2 && (mp[{1, c}] == 1 || mp[{1, c + 1}] == 1 || mp[{1, c - 1}] == 1)) right = 0;
                else right = 1;
            }
            if (r == 2 && c == 0){
                right = min(right, 1);
                left = min(left, 1);
            }
        }
        if (mp[{1, 1}] == 1) mid--;
        if (mp[{2, 0}] == 1) mid--;
        if (mp[{1, -1}] == 1) mid--;
        cout << min(mid, right + left) << endl;
    }
}

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐