恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

2020CCPC长春F[树上启发式合并+两两异或和拆位Trick]

  • 首页
  • 资讯中心
  • /
  • 2020CCPC长春F[树上启发式合并+两两异或和拆位Trick]

相关资讯

多个集合合并成无交集集合:并查集、哈希映射与排序扫描方案详解 2026/10/15 13:21:10
每日热门skill-别再让AI生成的页面「一眼假」了!用TaoToken接入Anthropic官方Frontend-Design Skill,让前端审美原地起飞 2026/10/15 13:21:10
STM32的GPS例程:CubeMX与DMA解析NMEA 2026/10/15 13:21:10

最新资讯

SpringBoot+Redis高并发民宿系统开发实战
SpringBoot旅游订票系统开发与高并发优化实践
MFC界面库换肤实战:皮肤库接入、配置与问题排查
SpringBoot+Uniapp民宿预订系统开发全解析
OpenShell:跨平台终端环境标准化方案
代码自文档化:减少注释依赖的编程实践

今日推荐

AI视频生成的时间一致性难题与时空建模演进
基于bbox的PDF文档解析:多栏重排与水印过滤实战
探矿数据进RAG前的清洗全攻略:TXT、Word、PDF、网页四类文档处理实践

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

2020CCPC长春F[树上启发式合并+两两异或和拆位Trick]

发布时间:2026/10/15 13:21:10
2020CCPC长春F[树上启发式合并+两两异或和拆位Trick] 2020CCPC长春F[树上启发式合并两两异或和拆位Trick]简单题意给定一颗有根树对于任意两点ij 如果a_i ^ a_j a_{lca(i,j)},那么对答案的贡献加i^j, 求解最终的答案题解对于树上信息不进行修改操作且对于一个节点来说统计一遍子树信息就可以得到该节点的答案的问题我们就可以采用树上启发式合并。这道题显然有这个特征而对于两两异或和我们想要快速求解也有一个trick维护所有合法答案的每一位上的1的数目以及0的数目那么最终的异或和就是每一位的cnt0 * cnt1 * 这一位对应的二进制权值那么有了以上的前置知识我们就可以对子树建立信息统计利用树上启发式合并完成这道题。我们维护子树中每个数字的数目以及每个数字的每一位的1的数目然后每当我们遍历到一个节点的时候枚举这个点作为lca我们需要找到两个子树中的点进行异或因此当我们遍历一颗子树的时候只能利用别的子树的信息而不能利用当前子树的信息所以我们可以进行两次遍历第一次遍历进行答案统计第二次遍历将子树节点统计进去而由于lca定值并且lca的权值我们需要知道如果采用传统的dfs遍历会导致我们还要传一个真正的lca参数我们可以采用dfn序遍历这样就会比dfs好写答案的统计对于u 作为lca的时候我们枚举子节点v1的时候需要找到其他节点中的权值为a_u^a_v1的其他节点进行答案统计对于每一位:如果这一位为1 那么我们加入cnt0 * 这一位如果是0那么我们加入cnt1 * 这一位code#includebits/stdc.husingnamespacestd;#defineintlonglongconstintN2e55;constintMAXN120;voidsolve(){intn;cinn;vectorinta(n1,0);for(inti1;in;i){cina[i];}vectorvectorinte(n1);for(inti1;in;i){intu,v;cinuv;e[u].push_back(v);e[v].push_back(u);}vectorintson(n1,0);vectorintsz(n1,0),dfn(n1,0),row(n1,0);intcnts0;vectorinttot(MAXN,0);vectorvectorintcnt(MAXN,vectorint(21,0));autodfssz[](autoself,intu,intfa)-void{sz[u]1;dfn[u]cnts;row[cnts]u;for(autov:e[u]){if(vfa)continue;self(self,v,u);sz[u]sz[v];if(sz[v]sz[son[u]])son[u]v;}};dfssz(dfssz,1,0);intmaxn0;autoupd[](intu,intval)-void{intva[u];tot[v]val;for(intb0;b20;b){if((ub)1)cnt[v][b]val;}};intans0;autoquery[](intval,intx)-int{intres0;for(intb0;b20;b){intonescnt[val][b];if((xb)1){res1LL*(tot[val]-ones)*(1b);}elseres1LL*ones*(1b);}returnres;};autodfs[](autoself,intu,intfa,intkeep)-void{for(autov:e[u]){if(vfa||vson[u])continue;self(self,v,u,0);}if(son[u]!0){self(self,son[u],u,1);}for(autov:e[u]){if(v!fav!son[u]){for(intidfn[v];idfn[v]sz[v];i){intxrow[i];ansquery(a[u]^a[x],x);}for(intidfn[v];idfn[v]sz[v];i){upd(row[i],1);}}}upd(u,1);if(!keep){for(intidfn[u];idfn[u]sz[u];i){upd(row[i],-1);}}};dfs(dfs,1,0,0);coutans\n;}signedmain(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);intT1;// cinT;while(T--)solve();return0;}

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号