按位拆分+前缀和,CF 1879D - Sum of XOR Functions

news2024/11/15 10:52:15

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

1879D - Sum of XOR Functions


二、解题报告

1、思路分析

朴素暴力O(N^2),考虑优化

由于要求的是异或值乘长度,那么我们可以按位考虑每一位异或值的贡献

我们枚举每一位

每次遍历一遍前缀和数组,哈希表记录前缀和出现次数cnt[]和出现下标之和sum[]

那么我们当前遍历到的前缀和第k位为j,我们其贡献就是(cnt[j ^ 1] * i - sum[j ^ 1]) * (1 << k)

也是比较典的位运算技巧

2、复杂度

时间复杂度: O(NlogU)空间复杂度:O(NlogU)

3、代码详解

 ​
#include <bits/stdc++.h>
using i64 = long long;
using i128 = __int128;
using PII = std::pair<int, int>;

std::ostream& operator<< (std::ostream& out, i128 x) {
    std::string s;
    while (x) s += ((x % 10) ^ 48), x /= 10;
    std::reverse(s.begin(), s.end());
    return out << s;
}

void solve() {
    const int P = 998244353;
    int N;
    i64 res = 0;
    std::cin >> N;
    std::vector<int> nums(N + 1);
    for (int i = 1; i <= N; i ++ ) std::cin >> nums[i], nums[i] ^= nums[i - 1];
    
    for (int k = 29; ~k; k -- ) {
        std::vector<std::array<i64, 2>> st(2);
        st[0][0] = 1;
        for (int i = 1; i <= N; i ++ ) {
            res = (res + ((st[(nums[i] >> k & 1) ^ 1][0] * i - st[(nums[i] >> k & 1) ^ 1][1]) % P << k)) % P;
            st[nums[i] >> k & 1][0] ++, st[nums[i] >> k & 1][1] += i;
        }
    }
    std::cout << res;
}   

int main(int argc, char** argv) {
    std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);
    int _ = 1;
    // std::cin >> _;
    while (_ --)
        solve();
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1814409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TMCM-BB1是单轴板驱动器

TMCM-BB4 简介 TMCM-BB1和TMCM-BB4是Trinamic插槽式模块的基板。TMCM-BB1是单轴板&#xff0c;提供对一个MCU模块和一个驱动器模块的访问。TMCM-BB4是一个4轴板&#xff0c;提供对41模块插槽的访问。TMCM-0930模块采用单36针PCI插座&#xff0c;整个系统采用主MCU&#xff08;…

[Shell编程学习路线]--shell中重定向和管道符(详细介绍)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f6e0;️Shell编程专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月12日10点50分 &#x1f004;️文章质量&#xff1a;93分 ——前言—— 在Shell编程中&#xff0c;重定向和管道符是两个…

超声波清洗机哪家好?四大人气爆单超声波清洗机汇总安利

在日常生活中&#xff0c;我们每天都在与灰尘和污渍作斗争&#xff0c;尤其是对于那些细小、精密的物品&#xff0c;如眼镜。眼镜不仅是视力矫正的工具&#xff0c;更是我们个人形象的一部分。一副干净、明亮的眼镜可以让我们的视线更加清晰。因为保持眼镜的清洁是一件很重要的…

接上篇---dbeaver如何导入csv文件(科学计数法)以及导出csv(科学计数法如何处理)

前提由于我用的是社区版本的&#xff0c;不支持excel&#xff0c;只支持csv导入导出 1.导入时候遇见科学计数法的解决方案&#xff1b; 由于我处理的是一些合同编码&#xff0c;虽然excel我给它设置成了文本类型&#xff0c;但是另存为csv的时候还是会变成科学计数法&#xf…

【关注】科大睿智祝贺企业通过ITSS公示名单

近日&#xff0c;根据信息技术服务标准符合性评估相关规定&#xff0c;现对以下单位进行公示&#xff0c;公示期5个工作日。公示期内如有异议&#xff0c;请提供持有异议的正式书面文件&#xff0c;包括持有异议的原因及证据、单位或个人真实名称及有效联系方式。小编祝贺多家服…

音视频封装的总接

1、封装涉及的基本概念 2、音视频封装基础3、封装总结 4、PS/TS码流封装层次图

c# 绘制正玄函数 控制台绘制

1.概要 2.代码 using System;class Program {static void Main(){const int width 80; // 控制台宽度 const int height 20; // 正弦波的高度范围 const double period 10.0; // 正弦波的周期 const double amplitude 5.0; // 正弦波的振幅 for (int x 0; x < wi…

衡量网络性能的指标

带宽 测速&#xff0c;下载速度一般是MB&#xff0c;运营商用的是b&#xff0c;之间有差别&#xff0c;100M带宽就是100M b 100个人访问同一个服务器&#xff0c;那么这个服务器的并发连接数就是100&#xff0c;有上限&#xff0c;受到性能的限制&#xff0c;当前面连接好多了…

JS :深拷贝解析与实现(附structuredClone语法测试)

浅拷贝简介 深拷贝是创建一个新对象&#xff0c;这个新对象包含原对象所有属性的全新拷贝&#xff0c;无论是基本数据类型还是引用类型的数据都会被完全复制一份&#xff0c;新旧对象间不存在任何关联&#xff0c;彼此独立。 前言 OK&#xff0c;最近又又又在学习JS的过程中…

【STM32之FreeRTOS(三)】任务的调度与状态

【STM32之FreeRTOS(三)】任务的调度与状态 文章目录 【STM32之FreeRTOS(三)】任务的调度与状态一、什么是任务调度&#xff1f;二、FreeRTOS的任务调度规则1.抢占式调度运行过程2.时间片调度运行过程 三、任务的状态四、任务综合小实验1.实验需求2.CubeMX配置2.1 配置KEY1,KEY2…

学生护眼台灯哪个品牌好?一文教会你如何挑选学生护眼台灯

台灯作为我们日常生活中重要的桌面照明工具&#xff0c;对于办公族的工作和学生的学习都扮演着关键角色。长期使用质量不佳的台灯可能会对我们的视力健康造成不利影响&#xff0c;尤其是对于眼睛尚在发育阶段的学生来说&#xff0c;这种影响更为显著。因此&#xff0c;在选择台…

表字段如何设计,如何打标签,如何进行维度分组,关于优先级排序如何处理(大数据开发)

今天分享一篇&#xff0c;热腾腾的实战&#xff0c;关于在数据开发中&#xff0c;表字段如何设计&#xff0c;如何打标签&#xff0c;如何进行维度分组&#xff0c;关于优先级排序如何处理&#xff1f;&#xff1f;&#xff1f; 1&#xff0c;表字段如何设计 首先&#xff0c…

RPG Maker MZ中被你忽略的干货操作——事件页优先级

文章目录 事件页优先级问题结论问题1答案 事件页优先级问题 结论 事件页2的优先级是大于事件页1的 问题1 事件页1没有条件、自动执行生成图片&#xff0c;效果如下 事件页2&#xff0c;没有条件&#xff0c;自动执行&#xff0c;效果如下 答案 只会执行事件页2&#…

数据库索引推荐大PK,DBdoctor和资深DBA的终极较量

前言 在上一篇文章《端午特别篇&#xff1a;你真的了解数据库索引吗&#xff1f;》中&#xff0c;纪宽针对一个业务SQL推荐索引优化问题提出了疑问。他发现DBdoctor推荐的索引组合&#xff08;status, purchase_date,device_name, device_id&#xff09;似乎与他作为DBA凭借多…

vue element-ui 下拉框 以及 input 限制输入,小数点后保留两位 界面设计案例 和 例子:支持mp4和m3u8视频播放

vue input 限制输入&#xff0c;小数点后保留两位 以及 图片垂直居中显示 和 分享 git 小技巧-CSDN博客文章浏览阅读430次&#xff0c;点赞5次&#xff0c;收藏4次。error:Your local changes to the following files would be overwritten by merge:_error: your local change…

传神社区|数据集合集第3期|中文NLP数据集合集

自从ChatGPT等大型语言模型&#xff08;Large Language Model, LLM&#xff09;出现以来&#xff0c;其类通用人工智能&#xff08;AGI&#xff09;能力引发了自然语言处理&#xff08;NLP&#xff09;领域的新一轮研究和应用浪潮。尤其是ChatGLM、LLaMA等普通开发者都能运行的…

计算机SCI期刊,中科院3区,IF=3.4,难度不大,无预警风险

一、期刊名称 Automated Software Engineering 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;计算机科学 影响因子&#xff1a;3.4 中科院分区&#xff1a;3区 三、期刊征稿范围 自动化软件工程是一份档案&#xff0c;同行评审的期刊&#xff0c;发表研…

网络故障排除:保持网络稳定与业务连续

目录 什么是网络故障&#xff1f; 网络故障排除的基本步骤 1. 问题识别 2. 确定故障范围 3. 检查物理连接 4. 检查设备配置 5. 测试与诊断 6. 实施解决方案 7. 验证与监控 了解更多 在现代企业中&#xff0c;网络的稳定性和性能直接影响业务的连续性和效率。作为一名…

算法day26

第一题 429. N 叉树的层序遍历 本题的要求我们可以通过队列来辅助完成层序遍历&#xff1b; 如下图的n叉树&#xff1a; 步骤一&#xff1a; 我们定义一个队列&#xff0c;先进行根节点入队列操作&#xff1b; 步骤二&#xff1a; 我们进行当前队列每一个元素的出队列操作&…

复旦大学首本大模型中文书太厉害啦!【大模型书籍推荐】

前言 在信息爆炸的时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术如同璀璨的星辰&#xff0c;照亮了我们与机器沟通的道路。而今&#xff0c;复旦大学自然语言处理实验室的教授团队&#xff0c;如同航海家般&#xff0c;为我们带来了一本指引大语言模型领域前行…