1 条题解

  • 0
    @ 2025-9-16 14:31:18

    参考题解

    解法不唯一,此解仅作参考。

    注意理解题意,n+1个房间,两个房间中间夹着的才是门,题目给出的数组数据是门的状态。

    两人分别从头尾出发,只找解锁的门,最后用总的房间数减去可以到达的房间数就是所求。 res = n - (m + 1)

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <queue>
    #include <deque>
    #include <unordered_map>
    #include <map>
    #include <cstring>
    #include <cmath>
    #include <unordered_set>
    #include <set>
    #include <utility>
    #include <climits>
    #include <iomanip>
    #include <stack>
    #include <bitset>
    
    #define int long long
    #define PII pair<int, int> 
    #define TLLL tuple<int , int , int>
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f
    #define all(v) v.begin() + 1 , v.end()
    #define ALL(v) v.begin() , v.end()
    #define endl "\n"
    using namespace std;
    
    void solve()
    {
        int n;
        cin >> n;
        vector<int> vec(n + 1);
        for (int i = 1 ; i <= n ; i ++ ) cin >> vec[i];
    
        int f = 0;
        for (int i = 1 ; i <= n ; i ++ ) if (!vec[i]) f ++;else break;
        for (int i = n ; i >= 1 ; i -- ) if (!vec[i]) f ++;else break;
    
        if (f >= n) 
        {
            cout << 0 << endl;
            return ;
        }
        
        cout << (n - f - 1) << endl;
        return ;
    }
    
    signed main() 
    {
        ios::sync_with_stdio(false);
        cin.tie(nullptr), cout.tie(nullptr);
        int T = 1;
        // cin >> T;
        while (T -- ) solve();
        return 0;
    }
    
    
    

    信息

    ID
    5615
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    99
    已通过
    26
    上传者