CF888G XOR-MST 最小异或生成树

CF888G XOR-MST

链接

CF888G

思路

trie上贪心,先左右两边连边,再用一条边的代价连起左右两颗树。因为内部的边一定比跨两棵树的边权笑,显然是对的。
代码自己瞎yy的。启发式合并

代码

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int _=2e5+7;
int n,a[_],ch[_*30][2],siz[_*30],cnt,col,rt[_*30];
ll ans;
std::vector<int> dsr[_*30];
void insert(int x) {int p=0;for(int i=29;i>=0;--i) {bool k=x&(1LL<<i);siz[p]++;if(!ch[p][k]) ch[p][k]=++cnt;p=ch[p][k];} siz[p]++;if(!rt[p]) rt[p]=++col;dsr[rt[p]].push_back(x);
}
int query(int rt,int init,int x) {int p=rt,ans=0;for(int i=init;i>=0;--i) {bool k=x&(1LL<<i);if(ch[p][k]) p=ch[p][k];else p=ch[p][!k],ans|=1<<i;}return ans;
}
void dfs(int p,int dep) {if(!ch[p][0]&&!ch[p][1]) return;if(!ch[p][0]||!ch[p][1]) {dfs(ch[p][0]|ch[p][1],dep-1);rt[p]=rt[ch[p][0]|ch[p][1]];} else {int k=siz[ch[p][0]]<siz[ch[p][1]];dfs(ch[p][0],dep-1),dfs(ch[p][1],dep-1);rt[p]=rt[ch[p][k]];int tmp=0x3f3f3f3f;int nb=ch[p][!k];ch[p][!k]=0;for(auto x:dsr[rt[nb]]) {tmp=min(tmp,query(p,dep,x));dsr[rt[p]].push_back(x);}ans+=tmp;ch[p][!k]=nb;}
}
int main() {// freopen("a.in","r",stdin);scanf("%d",&n);for(int i=1;i<=n;++i) scanf("%d",&a[i]),insert(a[i]);dfs(0,29);cout<<ans<<"\n";return 0;
}

转载于:https://www.cnblogs.com/dsrdsr/p/11405990.html

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

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

相关文章

页面事件的控制

1.设置默认焦点ASP.NET1.1中设置方法&#xff1a;<body onload"document.getElementById(TextBox1).focus();"><body onkeydown"document.all(TextBox1).focus();">ASP.NET2.0中设置方法&#xff1a;<form id"Form1"method"…

简而言之,JUnit:测试结构

尽管存在关于JUnit测试的书籍和文章&#xff0c;但我仍然经常遇到程序员&#xff0c;他们至多对这个工具及其正确用法都不甚了解。 因此&#xff0c;我想到了编写多部分教程的想法&#xff0c;从我的角度解释了要点。 也许在这个小型系列中采用的动手方法可能适合使一两个额外…

cf1207解题报告

cf1207解题报告 A 模拟 #include <bits/stdc.h> #define ll long long using namespace std; ll T,a,b,c,x,y; int main() {cin>>T;while(T --> 0) {cin>>a>>b>>c>>x>>y;ll ans0;if(x>y) {while(a>2&&b>1) ansx…

Oracle 用脚本安装第二个数据库

安装第二个数据库&#xff1a;登录oracle用户进入家目录&#xff0c;添加配置环境变量&#xff1a;vi .bash_profier ORACLE_SIDprod2临时环境变量&#xff1a;$export ORACLE_HOME/u01/app/oracle/product/11.2.0/db_1 $export ORACLE_SIDprod2创建第二个数据库文件目录&#…

深入学习jQuery鼠标事件

前面的话 鼠标事件是DOM事件中最常用的事件&#xff0c;jQuery对鼠标事件进行了封装和扩展。本文将详细介绍jQuery鼠标事件 类型 鼠标事件共10类&#xff0c;包括click、contextmenu、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter和mouseleave c…

智能自动PPR更改事件策略

ADF开发人员普遍认为&#xff0c;将迭代器绑定更改事件策略设置为ppr在性能方面不是一件好事&#xff0c;因为此策略会强制框架刷新每个请求上绑定到此迭代器的所有属性绑定。 这不是真的&#xff01; 框架仅刷新在请求期间已更改的属性和依赖于已更改属性的属性。 让我们考虑…

[转]国际化: 理解Java平台上的Locale

From:http://jatula.javaeye.com/blog/183680 语言和地理环境对我们的文化产生重要影响.我们同他人之间的交流以及生活中的事件都发生在语言和地理环境所产生的一个系统里.由于语言和环境的不同,以至 需要我们来制定一个适合的方式来达到向他人表述我们自己或者我们的想法的目的…

深入学习jQuery描述文本内容的3个方法

前面的话 在javascript中&#xff0c;描述元素内容有5个属性&#xff0c;分别是innerHTML、outerHTML、innerText、outerText和textContent。这5个属性各自有各自的功能&#xff0c;且兼容性不同。jQuery针对这样的处理提供了3个便捷的方法&#xff0c;分别是&#xff1a;html(…

luoguP4551最长异或路径

P4551最长异或路径 链接 luogu 思路 从\(1\)开始\(dfs\)求出\(xor\)路径。然后根据性质\(x\)到\(y\)的\(xor\)路径就是\(xo[x]^xo[y]\) 代码 #include <bits/stdc.h> using namespace std; const int _1e57; int xo[_],w[_],ans-1,num0; struct node {int v,q,nxt; }e[_&…

谈一谈我的996 (随笔)

说一说996这个最近技术圈比较热门的话题。 什么是996&#xff0c;早九晚九一周上班6天。 看朋友圈&#xff0c;有个朋友说自己没有经历过什么是996&#xff0c;感觉自己是个假的程序员&#xff0c;是不是程序员就应该加班呢&#xff0c;是不是已经下意识&#xff0c;大众性的认…

装饰器设计模式的应用

嗨&#xff0c;您好&#xff01; 今天&#xff0c;我将展示装饰设计模式的实际应用。 装饰器设计模式是一种广泛使用的设计模式&#xff0c;同时在运行期间处理图形&#xff0c;树木和动态更改。 如果您正在寻找或尝试进行递归&#xff0c;这也是一个不错的选择。 我喜欢它。…

ubuntu postgresql 的安装

本人亲测&#xff0c;在ubuntu9.10上安装的postgresql 8.3版本。郁闷了好几天&#xff0c;终于ok了。sudo apt-get install postgresql-8.3 postgresql-client-8.3 postgresql-contrib-8.3然后在/etc/profile里加上export POSTGRES_HOME/usr/lib/postgresql/8.3export PGLIB$PO…

loj2090. 「ZJOI2016」旅行者

loj2090. 「ZJOI2016」旅行者 链接 loj 思路 \((l,mid)(mid1,r)\).考虑跨过mid的贡献。 假设选的中间那条线的点为gzy,贡献为\(dis(x,gzy)dis(gzy,y)\) 那就计算n遍最短路,一次分治为\(n^2mlog{nm}\) 设Sn*m.矩阵的长度是不定的&#xff0c;每次取最长的边进行分治是最好的&…

利用select实现年月日三级联动的日期选择效果

前面的话 关于select控件&#xff0c;可能年月日三级联动的日期选择效果是最常见的应用了。本文是选择框脚本的实践&#xff0c;下面将对日期选择效果进行详细介绍 演示 style"width: 100%; height: 80px;" src"https://demo.xiaohuochai.site/js/date/d2.html&…

ubuntu资料

1、VNC实现Windows远程访问Ubuntu 16.04&#xff08;无需安装第三方桌面,直接使用自带远程工具&#xff09; https://www.cnblogs.com/xuliangxing/p/7642650.html 转载于:https://www.cnblogs.com/little-kwy/p/10761865.html

守护基于JVM的应用程序

部署体系结构设计是任何定制服务器端应用程序开发项目的重要组成部分。 由于其重要性&#xff0c;部署架构设计应尽早开始&#xff0c;并与其他开发活动一起进行。 部署体系结构设计的复杂性取决于许多方面&#xff0c;包括所提供服务的可伸缩性和可用性目标&#xff0c;部署过…

开篇

进入软件行业已有数日&#xff0c;但终归还算是新手。 对程序员有点好奇&#xff0c;所以选择这个职业&#xff0c;从现在开始希望能够记下自己从业当中的点点滴滴&#xff0c;同时希望自己也能够一直坚持下去。转载于:https://www.cnblogs.com/gaser/archive/2009/11/22/16082…

构造函数 基本使用

相关知识点&#xff1a; 构造函数、原型对象、实例对象 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta h…

2019CCPC网络预选赛 八道签到题题解

目录 2019中国大学生程序设计竞赛&#xff08;CCPC&#xff09; - 网络选拔赛6702 &6703 array6704 K-th occurrence6705 path6706 huntian oy6707 Shuffle Card6708 Windows Of CCPC6709 Fishing Master 2019中国大学生程序设计竞赛&#xff08;CCPC&#xff09; - 网络选…

深入理解表单脚本系列第一篇——表单对象

前面的话 javascript最初的一个应用就是分担服务器处理表单的责任&#xff0c;打破处处依赖服务器的局面。尽管目前的web和javascript已经有了长足的发展&#xff0c;但web表单的变化并不明显。由于web表单没有为许多常见任务提供现成的解决方法&#xff0c;很多开发人员不仅会…