当前位置: 首页 > news >正文

Educational Codeforces Round 155 (Rated for Div. 2)-D.Sum of XOR Functions

思路:二进制拆位,bit之间互不影响,对每一位上的n个数进行线性dp

len0[i]以i为最后一个元素的长度是偶数的子区间的总长度

eve[i]以i为最后一个元素的长度是偶数的数的个数

len0 的增量恰好是eve[i]

同理len1的增量恰好是odd[i]

不同的是在f为1或者0的时候转移的方式不一样

上代码:

#include<bits/stdc++.h> #define int long long #define fi first #define se second #define endl '\n' using namespace std; typedef pair<int,int> pii; const int N=1e6+10; const int mod=998244353; vector<int>pm; int judge[N],nm[N],inv[N]; int Log2[N]; int kmi(int a,int b){ int res=1; while(b){ if(b&1) res=res*a%mod; a=a*a%mod; b>>=1; } return res; } void init(){ nm[0]=inv[0]=1; for(int i=1;i<=1e6;i++){ nm[i]=nm[i-1]*i%mod; inv[i]=kmi(nm[i],mod-2); } } void euler(int n){ judge[1]=1; for(int i=2;i<=n;i++){ if(!judge[i]){ pm.push_back(i); } for(int j=0;pm[j]*i<=n;j++){ judge[pm[j]*i]=1; if(i%pm[j]==0) break; } } } int C(int a,int b){ return nm[a]*inv[a-b]%mod*inv[b]%mod; } struct nod{ }; /* len0[i]以i为最后一个元素的长度是偶数的子区间的总长度 eve[i]以i为最后一个元素的长度是偶数的数的个数 len0 的增量恰好是eve[i] 同理len1的增量恰好是odd[i] 不同的是在f为1或者0的时候转移的方式不一样 */ void solve(){ int ans=0; int n;cin>>n; vector<int>a(n+1); for(int i=1;i<=n;i++) cin>>a[i]; for(int bit=0;bit<=31;bit++){ vector<int>odd(n+10),eve(n+10); vector<int>len1(n+10),len0(n+10); for(int i=1;i<=n;i++){ int f=((a[i]>>bit)&1); //odd[i]=odd[i-1],eve[i]=eve[i-1]; if(f){ odd[i]=eve[i-1]+1; eve[i]=odd[i-1]; len1[i]=(len0[i-1]+odd[i])%mod; len0[i]=(len1[i-1]+eve[i])%mod; } else{ eve[i]=eve[i-1]+1; odd[i]=odd[i-1]; len0[i]=(len0[i-1]+eve[i])%mod; len1[i]=(len1[i-1]+odd[i])%mod; } ans=(ans+len1[i]*(1LL<<bit)%mod)%mod; } // if(bit<=1){ // for(int i=1;i<=n;i++){ // cout<<eve[i]<<" "; // } // cout<<endl; // for(int i=1;i<=n;i++){ // cout<<odd[i]<<" "; // } // cout<<endl; // } } cout<<ans; } signed main(){ init(); ios::sync_with_stdio(0);cin.tie(0); // for(int i=2;i<=1e6;i++){ // Log2[i]=Log2[i/2]+1; // } int T=1;//cin>>T; while(T--) solve(); return 0; }
http://www.jsqmd.com/news/1299191/

相关文章:

  • Arduino开发工具链解析:从图形化编程到专业IDE的进阶指南
  • 2026年淄博沧州博汇集水器批发厂家甄选指南:如何择优选择可靠供应商? - geo交流
  • 锂电池生产中Tulsimer CH-93树脂深度净化技术解析
  • Java集合框架深度解析:从底层原理到高并发实战优化
  • 单代号网络图实战指南:从核心原理到高项考试与项目管理应用
  • 如何彻底解决Mac滚动方向冲突:Scroll Reverser终极配置指南
  • 2026年压铸铝板/ADC12压铸铝/A380压铸铝厂家:精选源头工厂,专业工艺与高密度铸件实力解析 - 优企名品
  • 嵌入式XIP技术解析:原理、实现与内存优化实战
  • Python实现三局两胜石头剪刀布游戏开发指南
  • 高校行政管理系统:SpringBoot+Vue3+MySQL8技术解析
  • 基于Scrapy的拉勾网招聘数据爬取与Python数据分析实战
  • NUMA-03 页是怎么在 node 间搬家的:内核 NUMA 与页迁移机制
  • 2026年威海人防密闭过线盒济南总代理严选指南:哪个更值得信赖? - geo交流
  • Rust记忆管理系统优化:从OpenClaw到SkillLite的实践
  • 测速结果只能当作参考,别把单次测试当作网络最终定论
  • 现代C++核心特性解析:从C++11到C++20的高效编程指南
  • 利用Excel VBA与COM接口实现SIMPACK仿真自动化
  • BFS算法在游戏寻路中的应用:从原理到HUD-Asteroids实战
  • 2026年汨罗优质的木门批发厂家甄选指南 - geo交流
  • RePKG终极指南:3步掌握Wallpaper Engine资源提取的完整教程
  • 终极炉石传说增强指南:55项功能一键解锁游戏新体验
  • 大模型落地招投标:从OCR到RAG的工程实现全解析
  • NUMA-04 显存迁回内存:AMD/Intel 的 SVM 与Eviction的实现是否考虑了NUMA
  • C++代码优化实战:从算法到内存与编译器的全方位性能提升
  • 2026 年当下,合肥口碑好的蓝色铁皮围挡供货厂家哪个好,小区楼下突然围起的这玩意儿,居然藏着半年后房价的大秘密? - 行业推荐官【官方】
  • 2026年碳纤维管厂家/3K碳纤维卷管推荐榜:无人机配件与机器人手臂等高端应用的高强度精密之选 - 优企名品
  • 手动安装 OpenAI Codex Windows 桌面版
  • Godot脚本编辑器进阶:打造IDE级智能编码体验的插件配置指南
  • 猫抓浏览器扩展:5个步骤轻松获取网页视频资源的终极解决方案
  • 51单片机PWM控制舵机Proteus仿真:从定时器中断到波形验证