首页 > 其他分享 >CF1872E Data Structures Fan

CF1872E Data Structures Fan

时间:2023-09-21 21:37:24浏览次数:35  
标签:CF1872E int Structures cin 异或 cdots 操作 oplus Data

考查异或的基本性质。

对于操作2,用两个变量 \(X_0,X_1\) 记录 \(s_i=0/1\) 位置的异或和,在查询时直接输出即可。那么,在操作 1 如何更新 \(X_0,X_1\)?

如果操作 1 只改变一个数,比如将 \(s_i\) 从 \(0\) 改为 \(1\),那么我们只需将 \(a_i\) 从 \(X_0\) 中消除,并异或入 \(X_1\)。如何消除?因为一个数和自身异或结果为 \(0\),所以直接令 \(X_0=X_0\oplus a_i\) 即可。不难发现,异或和“撤销异或”的操作是相同的,我们同时对 \(X_1\) 的操作也是 \(X_1=X_1\oplus a_i\)。

现在操作 1 对一个区间取反,我们的操作变成 \(X_0=X_0\oplus (a_l+\cdots+a_r),X_1=X_1\oplus (a_l+\cdots+a_r)\),其中 \((a_l+\cdots+a_r)\) 显然可以用前缀和维护,总复杂度为 \(O(q)\)。

下面是 AC 代码:

void solve() {
    int n;
    cin >> n;
    vector<int> a(n + 1), p(n + 1);
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        p[i] = p[i - 1] ^ a[i];
    }
    int x0 = 0, x1 = 0;
    string s;
    cin >> s;
    for (int i = 1; i <= n; i++) {
        if (s[i - 1] == '0') {
            x0 ^= a[i];
        } else {
            x1 ^= a[i];
        }
    }
    int q;
    cin >> q;
    while (q--) {
        int opt;
        cin >> opt;
        if (opt == 1) {
            int l, r;
            cin >> l >> r;
            x0 ^= p[r] ^ p[l - 1];
            x1 ^= p[r] ^ p[l - 1];
        } else {
            int g;
            cin >> g;
            cout << (g ? x1 : x0) << " ";
        }
    }
    cout << endl;
}

标签:CF1872E,int,Structures,cin,异或,cdots,操作,oplus,Data
From: https://www.cnblogs.com/th19/p/17720996.html

相关文章

  • mysql查找data数据路径
    直接在MySQL运行代码showglobalvariableslike"%datadir%"; TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplifiedHungarianRussianChineseTraditionalIndonesia......
  • 使用 Databend 加速 Hive 查询
    作者:尚卓燃(PsiACE)澳门科技大学在读硕士,Databend研发工程师实习生ApacheOpenDAL(Incubating)Committerhttps://github.com/PsiACE随着架构的不断迭代和更新,大数据系统的查询目标也从大吞吐量查询逐步转移转向快速的交互式查询,对于查询的及时响应提出了更高要求。许多企业......
  • 成功入选 2023 谷歌出海创业加速器,Tapdata 乘势远航Tapdata Connector 实用指南:如何将
    9月6日,2023Google开发者大会的收官之行于上海拉开帷幕。会间,官方正式公布了最新一期谷歌出海创业加速器入营名单,Tapdata成功入选:长期以来,Google开发者大会为开发者提供了一个独一无二的学习和合作机会,这是一场汇聚全球创新者的聚会,鼓励创新思维。从中能够深入了解最新的......
  • Oracle 数据库11g版本dataguard创建的简单方法
    作者:ArupNanda DataGuard了解ActiveDataGuard如何通过实时查询,同时应用归档的的日志、将物理备用数据库转换为快照备用数据库以及对基础架构的一系列改进措施,让您对备份环境的投资物有所值。下载Oracle数据库11gOracle数据库11g对DataGuard功能进行了多方面的增强,......
  • 活动报名 | Modern Data Stack Meetup 北京首站启动!与三大开源社区共同探索现代数据栈
    相信对于“现代数据堆栈(ModernDataStack)”这个名词,大家早已不陌生。但若问及其真正含义,往往又很难快速、准确地阐明。事实上,对于我们的团队组织而言,吃透并灵活应用“现代数据栈”所能带来的价值与收益,将会是深远且符合发展趋势的。Q1:什么是现代数据堆栈?现代数据堆栈的流行......
  • 什么是Datacom认证? Datacom,即Datacom Communication的缩写,中文为“数据通信”,属于IC
    什么是Datacom认证?Datacom,即DatacomCommunication的缩写,中文为“数据通信”,属于ICT技术架构认证类别(华为认证包含ICT技术架构认证、平台与服务认证和行业ICT认证三类认证)。作为Routing&Switching认证的升级版,Datacom认证已于2020年4月18日正式发布,后续将替代Routing&Switc......
  • springBoot 启动报错: If you want an embedded database (H2, HSQL or Derby), please
    原因其实这个异常在SpringBoot中是一个比较常见的异常,一般是因为SpringBoot自动配置时,检测到我们添加了MySQL、Oracle、Mybatis等和数据库相关的依赖包,结果我们的配置文件中却没有添加数据库相关的配置,比如:spring:datasource:driver-class-name:com.mysql.jdbc.Driver......
  • 本地clump data
    在使用TwoSampleMR分析样本的时候,时长遇到clump_data报错,原因是需要联网,其实可以在本地clump数据,使用ieugwasr包里面的ld_clump_data函数,在安装TwoSampleMR的时候会自动安装ieugwasr包,如果需要最新的包,可以使用:remotes::install_github("mrcieu/ieugwasr")该函数说明如下:关键......
  • DataGrip 2023:多功能的数据库管理软件
    DataGrip2023是由JetBrains开发的一款功能强大的数据库管理工具,它旨在提供一个集成的开发环境,方便开发人员管理和操作各种类型的数据库。DataGrip2023支持多种数据库系统,包括MySQL、PostgreSQL、Oracle、SQLServer等,它具有直观的用户界面,使用户能够轻松地连接到数据库服务器,进......
  • Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: com.fa
    报错:Handlerdispatchfailed;nestedexceptionisjava.lang.NoSuchMethodError:com.fasterxml.jackson.databind.ObjectMapper.canSerialize(Ljava/lang/Class;Ljava/util/concurrent/atomic/AtomicReference;)Zjar包冲突,找到对应的jar包删除......