• Monotonic Renumeration- codeforce


    题解

    依次判断每个位置是否能有两个取值,即(a_i = a_{i - 1})(a_i=a_{i - 1} + 1)。判断条件:没有数与它相同,或者它不落在两个相同的数之间。

    代码

    int main()
    {
        cin >> n;
        Rep(i, 1, n) {
            cin >> a[i];
            q[a[i]] = i;
        }
    
        int ma = 0;
        LL ans = 1, cnt = -1;
    
        Rep(i, 1, n) {
            ma = max(ma, q[a[i]]);
            if (ma == i) {
                cnt++;
                if (cnt) ans = (ans * 2) % mod;
            }
        }
    
        cout << ans << endl;
        return 0;
    }
    
    void pushDown(int root) {
        add[lson] += add[root];
        add[rson] += add[root];
        add[root] = 0;
    }
    
    void Update(int l, int r, int root, int L, int R, int x) {
        if (l > R || r < L) return;
        if (L <= l && r <= R) {
            add[root] += x;
            return;
        }
        if (add[root]) pushDown(root);
        int mid = (l + r) >> 1;
        Update(l, mid, lson, L, R, x);
        Update(mid + 1, r, rson, L, R, x);
    }
    
    int Find(int l, int r, int root, int pos) {
        if (l == r) return add[root];
        if (add[root]) pushDown(root);
        int mid = (l + r) >> 1;
        int ans = 0;
        if (pos <= mid) ans = Find(l, mid, lson, pos);
        else ans = Find(mid + 1, r, rson, pos);
        return ans;
    }
    
    
    int main()
    {
        cin >> n;
        Rep(i, 1, n) cin >> a[i];
    
        Rep(i, 1, n) q[a[i]] = max(q[a[i]], i);
    
        Rep(i, 1, n) if (!use[a[i]]) {
            use[a[i]] = 1;
            Update(1, n, 1, i, q[a[i]], 1);
        }
    
        vis[a[1]] = 1;
    
        LL ans = 1;
        Rep(i, 2, n) if (!vis[a[i]]) {
            vis[a[i]] = 1;
            if (Find(1, n, 1, i) == 1) ans = (ans * 2) % mod;
        }
        cout << ans << endl;
        
        return 0;
    }
    
  • 相关阅读:
    [zt]petshop4.0 详解之二
    HOW TO: Implement a DataSet JOIN helper class in Visual C# .NET(DataSetHelper)
    DVGPrinter 设置列宽
    [转载]ASP.NET 的学习流程
    初级版FAQ
    [转]PetShop的系统架构设计(1)
    [zt] petshop4.0 详解之三
    mssql2000 jdbc驱动设置
    自动设置环境变量
    Ubuntu中VirtualBox不能使用USB(此法不通)
  • 原文地址:https://www.cnblogs.com/zgglj-com/p/10249317.html
Copyright © 2020-2023  润新知