zoukankan      html  css  js  c++  java
  • Jys

    #pragma GCC optimize("Ofast")
    #pragma GCC target("sse2")
    #include <bits/stdc++.h>
    #define ls(x) (x << 1)
    #define rs(x) (x << 1 | 1)
    #define mid (l + r >> 1)
    
    using namespace std;
    const int U = 100, N = 200000;
    
    
    int tr[(N << 2) + 5][U + 5];
    int n, a, b, x, y;
    int w[N + 5];
    
    
    void Build(int p, int l, int r)
    {
        for (int i = 1; i <= U; i++) tr[p][i] = i;
        if (l == r) return;
        Build(ls(p), l, mid), Build(rs(p), mid + 1, r);
    }
    
    
    void Psd(int p, int l, int r)
    {
        if (l == r) return;
        for (int i = 1; i <= U; i++)
            tr[ls(p)][i] = tr[p][tr[ls(p)][i]],
            tr[rs(p)][i] = tr[p][tr[rs(p)][i]];
        for (int i = 1; i <= U; i++) tr[p][i] = i;
    }
    
    
    void Modify(int p, int l, int r)
    {
        if (l >= a && r <= b) 
        {
            for (int i = 1; i <= U; i++) if (tr[p][i] == x) tr[p][i] = y;
            return;
        }
        Psd(p, l, r);
        if (a <= mid) Modify(ls(p), l, mid);
        if (b > mid) Modify(rs(p), mid + 1, r);
    }
    
    
    void Print(int p, int l, int r)
    {
        if (l == r) return (void)printf("%d ", tr[p][w[l]]);
        Psd(p, l, r), Print(ls(p), l, mid), Print(rs(p), mid + 1, r);
    }
    
    
    int main()
    {
        scanf("%d", &n);
        for (int i = 1; i <= n; i++) scanf("%d", &w[i]);
        Build(1, 1, n);
        int q;
        for (scanf("%d", &q); q--;) scanf("%d%d%d%d", &a, &b, &x, &y), Modify(1, 1, n);
        return Print(1, 1, n), 0;
    }
  • 相关阅读:
    GCD HDU
    Finding Lines UVALive
    Chinese Mahjong UVA
    DNA Evolution CodeForces
    String Reconstruction (并查集)
    Number Cutting Game HDU
    Paint the Wall ZOJ
    Star sky CodeForces
    Haunted Graveyard ZOJ
    GuGuFishtion HDU
  • 原文地址:https://www.cnblogs.com/oply/p/12850182.html
Copyright © 2011-2022 走看看