• Codeforces 339D-Xenia and Bit Operations(线段树)


    传送门

    • 还是比较明显的线段树的操作
    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 2e6 + 10;
    int a[N];
    int tn, m, n;
    
    struct stree
    {
        int id, num;
    
    } tree[N << 2];
    
    int ls(int x) { return x << 1; }
    int rs(int x) { return x << 1 | 1; }
    
    void pushup(int rt)
    {
        tree[rt].id = tree[ls(rt)].id ^ 1;
        if (tree[rt].id == 1)
        {
            tree[rt].num = tree[ls(rt)].num | tree[rs(rt)].num;
            return;
        }
        else
        {
            tree[rt].num = tree[ls(rt)].num ^ tree[rs(rt)].num;
        }
    }
    
    void build(int rt, int l, int r)
    {
        if (l == r)
        {
            tree[rt].num = a[l];
            tree[rt].id = 0;
            return;
        }
        int mid = (l + r) / 2;
        build(ls(rt), l, mid);
        build(rs(rt), mid + 1, r);
        pushup(rt);
    }
    
    void update(int rt, int Id, int num, int l, int r)
    {
        if (l == r && l == Id)
        {
            tree[rt].num = num;
            return;
        }
        int mid = (l + r) / 2;
        if (Id <= mid)
            update(ls(rt), Id, num, l, mid);
        else
            update(rs(rt), Id, num, mid + 1, r);
        pushup(rt);
    }
    
    int queryFirst(int rt)
    {
        return tree[rt].num;
    }
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin >> tn >> m;
        n = pow(2, tn);
        for (int i = 1; i <= n; ++i)
            cin >> a[i];
        build(1, 1, n);
        for (int i = 0; i < m; ++i)
        {
            int p, b;
            cin >> p >> b;
            a[p] = b;
            update(1, p, b, 1, n);
            cout << queryFirst(1) << "
    ";
        }
        return 0;
    }
    
  • 相关阅读:
    shell test条件判断
    shell 变量
    shell 流程结构
    shell 正则表达式
    shell脚本常用参数
    snmp 简单的网络管理协议
    linux
    nmap
    git 基础操作
    linux 下 svn 更新代码
  • 原文地址:https://www.cnblogs.com/DrumWashingMachine-Lhy-NoobInCsu/p/13825298.html
Copyright © 2020-2023  润新知