zoukankan      html  css  js  c++  java
  • Codeforces-339D. Xenia and Bit Operations

    传送门

    给定n,m,代表有2n个数,m次询问

    每次询问时先将此时序列第p个数值改为b,在求序列的值。序列的值定义如下。

    将序列中的第2*i项与2*i-1项或,得到新序列,再把新序列的第2*i项与2*i-1项做异或操作,再将新序列进行或操作,如此往复,最终得到一个数,称为序列的值

    线段树水题

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define INF 0x3f3f3f3f
     5 using namespace std;
     6 typedef long long LL;
     7 
     8 const int maxn = (1 << 17) + 5;
     9 int da[maxn * 4];
    10 int n, m;
    11 int p, b;
    12 
    13 int n_;
    14 
    15 void build() {
    16     int op = 0;
    17     int k = n_ + n_ - 2;
    18     k = (k - 1) / 2;
    19     int t = n;
    20     while (k > 0) {
    21         if (k == (1 << t) - 2) {op ^= 1;t--;}
    22         if (op == 1) {
    23             da[k] = da[k * 2 + 1] | da[k * 2 + 2];
    24         } else {
    25             da[k] = da[k * 2 + 1] ^ da[k * 2 + 2];
    26         }
    27         k--;
    28     }
    29 }
    30 
    31 void update(int k, int val) {
    32     k += n_ - 2;
    33     da[k] = val;
    34     int op = 0;
    35     while (k > 0) {
    36         k = (k - 1) / 2;
    37         op = 1 - op;
    38         if (op == 1) {
    39             da[k] = da[k * 2 + 1] | da[k * 2 + 2];
    40         } else {
    41             da[k] = da[k * 2 + 1] ^ da[k * 2 + 2];
    42         }
    43     }
    44 }
    45 
    46 int main() {
    47     scanf("%d%d", &n, &m);
    48     n_ = (1 << n);
    49     for (int i = 0; i < n_; i++) {
    50         scanf("%d", da + n_ + i - 1);
    51     }
    52     build();
    53     while (m--) {
    54         scanf("%d%d", &p, &b);
    55         update(p, b);
    56         printf("%d
    ", da[0]);
    57     }
    58     return 0;
    59 }
  • 相关阅读:
    移动端通过js来用rem控制字体大小的用法
    移动端字体大小自动缩放css样式控制
    meta
    兔子生兔子问题
    CSS hack
    为对象添加一个新的方法
    js实现菜单切换
    Node.js基础学习(第三幕)
    Node.js基础学习(第二幕)
    C#通用公共类库ZXNetStandardDepot.Common
  • 原文地址:https://www.cnblogs.com/xFANx/p/8782870.html
Copyright © 2011-2022 走看看