备战蓝桥杯---0/1Trie模板

news2024/11/28 20:34:21

最近学校作业有点多+被迫参加学校的仪仗队当帕鲁,有许多题还没有补(尤其是牛客,寒假时没有怎么管,现在后悔了qaq),蓝桥杯也快来了,一下子事情多了起来,反而不知道要看什么了,在此先立个flag----蓝桥杯拿个奖(能省一最好,没有的话省2/3也不是不行)        

同时写一下近期计划:到4月前把寒假的题补完,到4月10号前刷完真题。

进入正题:

什么是0/1trie? 就是一个二叉树,左节点为0,右节点为1,因此,某一个数的二进制从高位到低位可以用0/1trie从根节点往下走写出。

下面让我们直接看题吧:

直接枚举的话复杂度为n^2,因此我们考虑用0/1trie,我们先枚举数,然后如果有不同的位就选它即可,下面是AC代码(可以当模板记):

#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int n,a[N];
int ch[N*31][2],idx;
void insert(int x){
	int p=0;
	for(int i=30;i>=0;i--){
		int j=(x>>i)&1;
		if(ch[p][j]==0) ch[p][j]=++idx;
		p=ch[p][j];
	}
}
int query(int x){
	int p=0,res=0;
	for(int i=30;i>=0;i--){
		int j=(x>>i)&1;
		if(ch[p][!j]){
			res+=(1<<i);
			p=ch[p][!j];
		}
		else p=ch[p][j];
	}
	return res;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		insert(a[i]);
	}
	int ans=0;
	for(int i=1;i<=n;i++){
		ans=max(ans,query(a[i]));
	}
	cout<<ans;
}

来个比较难的(出自寒假训练营2)

首先,我们只要考虑最大值与最小值,于是我们sort一下,当我们把相应的i与j确定后,中间的数相当于都可以有选与不选,因此为2^(j-i-1)种,现在问题就转化成了如何求符合的max,min对,我们不妨先枚举max,我们同时构造0/1trie,我们知道:

1.如果k的一位为0,那么max^min为1的话他的子树都可以选。

2.若k的一位为1,那么max^min只能选1.

因此,我们让其走下去不断累加答案,至于一个串贡献的方案数,我们2^(j-i-1)=2^(j-1)/2^i,于是我们在树上用逆元维护1/2^i即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10,mod=1e9+7;
long long son[10000100][2],w[10000100],idx;
long long n,k,a[N];
bool cmp(int a,int b){
    return a<b;
}
long long qpow(long long a,long long b){
    long long res=1;
    while(b){
        if(b&1) res=res*a%mod;
        a=a*a%mod;
        b>>=1;
    }
    return res;
}
void insert(long long x,long long id){
    long long p=0,inv=qpow(qpow(2,id),mod-2);
    for(int i=30;i>=0;i--){
        int u=(x>>i)&1;
        if(son[p][u]==0) son[p][u]=++idx;
        p=son[p][u];
        w[p]=(w[p]+inv)%mod;
    }
}
long long quary(long long x){
    long long res=0,p=0;
    for(int i=30;i>=0;i--){
        int u=(x>>i&1)^(k>>i&1);
        if(k>>i&1) res=(res+w[son[p][1-u]])%mod;
        if(son[p][u]==0) return res;
        p=son[p][u];
    }
    return (res+w[p])%mod;
}
void solve(){
    cin>>n>>k;
    for(int i=0;i<=idx;i++){
        son[i][0]=0;
        son[i][1]=0;
        w[i]=0;
    }
    idx=0;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+n+1,cmp);
    long long ans=0;
    for(int i=1;i<=n;i++){
        ans=(ans+quary(a[i])*qpow(2,i-1)%mod+1)%mod;
        insert(a[i],i);
    }
    cout<<ans;
    return;
}
int main(){
    ios::sync_with_stdio(false),cin.tie(nullptr);
    int t;
    cin>>t;
    while(t--){
        solve();
        cout<<endl;
    }
}

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

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

相关文章

C#,图论与图算法,计算无向连通图中长度为n环的算法与源代码

1 无向连通图中长度为n环 给定一个无向连通图和一个数n,计算图中长度为n的环的总数。长度为n的循环仅表示该循环包含n个顶点和n条边。我们必须统计存在的所有这样的环。 为了解决这个问题,可以有效地使用DFS(深度优先搜索)。使用DFS,我们可以找到特定源(或起点)的长度…

Acrobat Pro DC 2023:PDF编辑与管理的全新体验

Acrobat Pro DC 2023是一款功能强大且全面的PDF编辑和管理软件&#xff0c;旨在为用户提供卓越的PDF处理体验。以下是关于Acrobat Pro DC 2023软件功能特色的详细介绍&#xff1a; PDF编辑和管理&#xff1a;Acrobat Pro DC 2023拥有强大的PDF编辑功能&#xff0c;可以对PDF文…

Grok-1:参数量最大的开源大语言模型

Grok-1&#xff1a;参数量最大的开源大语言模型 项目简介 由马斯克领衔的大型模型企业 xAI 正式公布了一项重要动作&#xff1a;开源了一个拥有 3140 亿参数的混合专家模型&#xff08;MoE&#xff09;「Grok-1」&#xff0c;连同其模型权重和网络架构一并公开。 此举将 Gro…

南京大学AI考研,宣布改考408!

官网还没通知 附上南大与同层次学校近四年的分数线对比&#xff0c;整体很难 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 如果确定要冲南大的话建议提早调整自己的复习路线&…

Java 学习和实践笔记(41):API 文档以及String类的常用方法

JDK 8用到的全部类的文档在这里下载&#xff1a; Java Development Kit 8 文档 | Oracle 中国

十一、MYSQL 基于MHA的高可用集群

目录 一、MHA概述 1、简介 2、MHA 特点 3、MHA 工作原理&#xff08;流程&#xff09; 二、MHA高可用结构部署 1、环境准备 2、安装MHA 监控manager 3、在manager管理机器上配置管理节点&#xff1a; 4、编master_ip_failover脚本写 5、在master上创建mha这个用户来访…

Android和IOS Flutter应用开发使用 Provider.of 时,可以使用 listen: false 来避免不必要的重建

文章目录 listen: false解释示例 listen: false 使用 Provider.of 时&#xff0c;可以使用 listen: false 来避免不必要的重建 解释 当您使用 Provider.of 获取状态对象时&#xff0c;默认情况下&#xff0c;该对象每次发生变化时都会触发重建该对象所在的组件。这在大多数情…

综合知识篇11-系统性能评价、系统测试考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例…

百度交易中台之系统对账篇

作者 | 天空 导读 introduction 百度交易中台作为集团移动生态战略的基础设施&#xff0c;面向收银交易与清分结算场景&#xff0c;赋能业务、提供高效交易生态搭建。目前支持百度体系内多个产品线&#xff0c;主要包括&#xff1a;度小店、小程序、地图打车、文心一言等。本文…

【保姆级教程】如何拥有GPT?(Proton邮箱版)

OnlyFans 订阅教程移步&#xff1a;【保姆级】2024年最新Onlyfans订阅教程 Midjourney 订阅教程移步&#xff1a; 【一看就会】五分钟完成MidJourney订阅 GPT-4.0 升级教程移步&#xff1a;五分钟开通GPT4.0 如果你需要使用Wildcard开通GPT4、Midjourney或是Onlyfans的话&am…

HCIA ——VLAN实验

一 、 实验需求 1.PC1和PC3所在接口为access接口&#xff1b;属于vlan 2 PC2-4-5-6处于同一网段&#xff1b;其中PC2可以访问PC4-5-6 PC4可以访问PC5不能访问PC6 PC5不能访问PC6 3.PC1-PC3与PC2-4-5-6不在同一个网段 4.所有PC均使用DHCP获取IP地址&#xff0c;且PC1可以正常访问…

Linux 进程管理工具top ps

概述 top 和 ps 是 Linux 系统中两个非常重要的用于管理和监控进程的命令工具。以下是它们的主要功能和区别&#xff1a; top&#xff1a; 动态视图&#xff1a;top 提供了一个实时动态更新的视图&#xff0c;能够持续显示系统中当前正在运行的进程信息及其资源占用情况。 系统…

【蓝桥杯-单片机】基于定时器的倒计时程序设计

基于定时器的倒计时程序 题目如下所示&#xff1a; 实现过程中遇到的一些问题 01 如何改变Seg_Buf数组的值数码管总是一致地显示0 1 2 3 4 5 首先这个问题不是在main.c中关于数码管显示部分的逻辑错误&#xff0c;就是发生在数码管的底层错误。 检查了逻辑部分&#xff…

[Labtools 27-1429] XML parser encountered a problem in file

平台&#xff1a;Vivado2108.3 最近在使用vivado的debug过程中发现&#xff0c;编译好工程后打开open hardware manager出现如下错误。 [Labtools 27-1429] XML parser encountered a problem in file E:/githome/xxxx/hw_1/hw.xml at line 1 : XML character encoding not su…

C语言结构体类型,结构体变量的创建和初始化,结构中存在的内存对齐

1.语言结构体类型 结构是⼀些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 声明 struct tag {member-list; }variable-list; 例如声明一本书&#xff1a; struct Book {char name[20]; //书名char author[20]; //作者int price; //定价…

快速入门uniapp-day03

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大二在校生 &#x1f921; 个人主页&#xff1a;坠入暮云间x &#x1f43c;座右铭&#xff1a;给自己一个梦想&#xff0c;给世界一个惊喜。 &#x1f385;**学习目标: 坚持每一次的学习打卡 文章目录 什么是标签栏…

第7篇:全加器的Signal Tap调试

Q&#xff1a;上一篇里我们对全加器进行了功能仿真&#xff0c;这次我们用Quartus软件里的Signal Tap Logic Analyzer工具对全加器进行调试。 A&#xff1a;Signal Tap Logic Analyzer是Quartus Prime设计软件中自带的系统级调试工具&#xff0c;它可以在FPGA设计中采集和显示…

halcon颜色提取

在Halcon中&#xff0c;颜色提取通常用于从图像中提取特定颇具的区域或对象。 将输入的 RGB 颜色空间转换为 HSV * 根据颜色提取想要的目标 for Index:1 to 2 by 1read_image (Image, cableIndex)* 获取一个三通道图像中每个通道的图像* 红色通道&#xff08;R&#xff09;、绿…

Linux:Gitlab:16.9.2 创建用户及项目仓库基础操作(2)

我在上一章介绍了基本的搭建以及邮箱配置 Linux&#xff1a;Gitlab:16.9.2 (rpm包) 部署及基础操作&#xff08;1&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/136821311?spm1001.2014.3001.5501 本章介绍一下用户的创建&#xff0c;组内设置用户&…

STP环路避免实验(华为)

思科设备参考&#xff1a;STP环路避免实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 Spanning Tree Protocol&#xff08;STP&#xff09;&#xff0c;即生成树协议&#xff0c;是一种数据链路层协议。主要作用是防止二层环路&#xff0c;并自适应网络变化和故障…