hdu4825---Xor Sum(Trie + 贪心)

如何把Excel的数据导入python? Python数据分析——excl导入数据的简单方法(xlrd) 本文的初衷是发现网上很多Excel导入Python都没有结合具体Excel文档进行讲解,所以这篇文档将会呈现一个简单快速的Excel+Python的入门方法。 开发环境 Prerequisites: 在开始用Python导入Excel之前,要配置好自己的开发环境,最好有IDE(terminal也可)+安装相应的数据分析包。 IDE :pycharm,vscode,etc 数据分析包:matplotlib,xlrd,numpy,etc 导入数 阅读详情

Problem Description
Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。Prometheus 为了让 Zeus 看到人类的伟大,随即同意 Zeus 可以向人类求助。你能证明人类的智慧么?

Input
输入包含若干组测试数据,每组测试数据包含若干行。
输入的第一行是一个整数T(T < 10),表示共有T组数据。
每组数据的第一行输入两个正整数N,M(<1=N,M<=100000),接下来一行,包含N个正整数,代表 Zeus 的获得的集合,之后M行,每行一个正整数S,代表 Prometheus 询问的正整数。所有正整数均不超过2^32。

Output
对于每组数据,首先需要输出单独一行”Case #?:”,其中问号处应填入当前的数据组数,组数从1开始计算。
对于每个询问,输出一个正整数K,使得K与S异或值最大。

Sample Input

2
3 2
3 4 5
1
5
4 1
4 6 5 6
3

Sample Output

Case #1:
4
3
Case #2:
4

Source
2014年百度之星程序设计大赛 - 资格赛

Recommend
liuyiding | We have carefully selected several similar problems for you: 5235 5234 5233 5232 5231

把n个数化成二进制,然后建立Trie树
接下来贪心遍历这棵树就行

/*************************************************************************
    > File Name: hdu4825.cpp
    > Author: ALex
    > Mail: zchao1995@gmail.com 
    > Created Time: 2015年05月25日 星期一 14时36分41秒
 ************************************************************************/

#include <functional>
#include <algorithm>
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
#include <map>
#include <bitset>
#include <set>
#include <vector>

using namespace std;

const double pi = acos(-1.0);
const int inf = 0x3f3f3f3f;
const double eps = 1e-15;
typedef long long LL;
typedef pair <int, int> PLL;

int bit[40];
static const int MaxNode = 3200010;
class Trie {
    public:
        void init();
        int newnode();
        void insert(int bit[], int w);
        int getNum(int bit[], int w);
    private:
        int next[MaxNode][2];
        int end[MaxNode];
        int L, root;
}trie;

int Trie :: newnode() {
    next[L][0] = next[L][1] = -1;
    ++L;
    return L - 1;
}

void Trie :: init() {
    L = 0;
    root = newnode();
}

void Trie :: insert(int bit[], int w) {
    int now = root;
    for (int i = 31; i >= 0; --i) {
        if (next[now][bit[i]] == -1) {
            next[now][bit[i]] = newnode();
        }
        now = next[now][bit[i]];
    }
    end[now] = w;
}

int Trie :: getNum(int bit[], int w) {
    int now = root;
    for (int i = 31; i >= 0; --i) {
        if (next[now][bit[i] ^ 1] == -1) {
            now = next[now][bit[i]];
        }
        else {
            now = next[now][bit[i] ^ 1];
        }
    }
    return end[now];
};

void calc(int num) {
    int cnt = 0;
    while (num) {
        bit[cnt++] = num % 2;
        num >>= 1;
    }
    for (int i = cnt; i <= 31; ++i) {
        bit[i] = 0;
    }   
}

int main() {
    int t, icase = 1;
    scanf("%d", &t);
    while (t--) {
        int n, m, w;
        scanf("%d%d", &n, &m);
        trie.init();
        for (int i = 1; i <= n; ++i) {
            scanf("%d", &w);
            calc(w);
            trie.insert(bit, w);
        }
        printf("Case #%d:\n", icase++);
        for (int i = 1; i <= m; ++i) {
            scanf("%d", &w);
            calc(w);
            printf("%d\n", trie.getNum(bit, w));
        }
    }
    return 0;
}
麒麟V10 ARM环境离线部署MySQL:从依赖缺失到服务自启的完整避坑指南 本文详细介绍了在麒麟V10 ARM环境下离线部署MySQL的完整流程,包括依赖缺失解决方案、目录配置、服务自启设置及性能调优。特别针对国产操作系统和ARM架构的兼容性问题,提供了实用的避坑指南和优化建议,帮助用户高效完成MySQL部署与维护。 阅读详情

相关推荐

Delphi 12.3 精简绿色版下载

Delphi精简绿色版基于原版安装,去掉了InterBase、法语、德语、日语,只保留了Delphi Windows 32和Delphi Windows 64桌面开发,其余部分未做任何修改。Delphi精简绿色版不含任何破解,仅供学习和研究,24小时后请自行删除,如需继续使用Delphi,请购买正版。绿色版基于原版安装,未做任何精简和修改。绿色版不含任何破解,仅供学习和研究,24小时后请自行删除,如需继续使用RAD Studio,请购买正版。

全粘工程师 4307

字典树练习

字典树

m0_62866610的博客 217

抖音批量取消关注神器:5行JS代码搞定,告别手动操作(附详细步骤)

本文介绍了一种利用JS脚本在抖音创作者平台批量取消关注的高效方法。通过浏览器开发者工具执行简单的JavaScript代码,即可自动化模拟点击操作,快速清理大量关注列表,告别繁琐的手动操作。文中提供了详细的步骤和核心代码,适合有一定技术基础的用户参考。

weixin_29009971的博客 596

hdu 4825 Xor Sum (字典树)

Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。Prometheus 为了让 Zeus 看到人类的伟大,随即同意 Zeus 可以向人类求助。你能证明人类的

gyr 411

matlab生成blocks、bumps和doppler标准测试信号

关键函数:wnoise使用方式X = wnoise(FUN,N) [X,XN] = wnoise(FUN,N,SQRT_SNR) [X,XN] = wnoise(FUN,N,SQRT_SNR,INIT)X = wnoise(FUN,N) 返回由 FUN给出的信号,长度为2^N,幅值范围[0,1].[X,XN] = wnoise(FUN,N,SQRT_SNR) ,返回了一个测试信号X,以及一个加噪

ZSZ_shsf的博客 6581

Python Selenium调用IE11报错全解析:从环境配置到稳定运行

在Web自动化测试领域,Selenium作为主流的跨浏览器测试框架,其核心原理是通过WebDriver协议与不同浏览器的驱动程序进行通信,实现对浏览器行为的模拟与控制。这一技术为软件测试的自动化、回归测试的效率提升提供了重要价值,广泛应用于金融、政务等对遗留系统兼容性要求高的行业场景。然而,当技术栈涉及过时的浏览器如IE11时,环境配置的复杂性显著增加,特别是Python与Selenium的组合常遭遇驱动兼容性、安全设置等挑战。本文聚焦于解决Python Selenium驱动IE11时的典型报错问题,深入剖

weixin_28834765的博客 323

2014 百度之星第三题

Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total Submission(s): 0    Accepted Submission(s): 0 Problem Description Zeus 和 Prometheus 做了一个

huantwofat 1832

适合小白的超详细yolov8环境配置+实例运行教程,从零开始教你如何使用yolov8训练自己的数据集(Windows+conda+pycharm)

yolov8源码下载地址:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLiteyolov8使用文档: Home - Ultralytics YOLOv8 Docs教学视频参考: 包会!YOLOv8训练自己的数据集_哔哩哔哩_bilibili先用conda prompt创建一个虚拟环境,我的叫yolov8, python版本用3.10 源码地址:GitHub - ul

CV在读 25万+

百度之星 1003 Xor Sum

Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。Prometheus 为了让 Zeus 看到人类的伟大,随即同

Gavin的专栏 797

FISCO BCOS 三、多群组部署以及新节点加入群组

本章主要以星形组网和并行多组组网拓扑为例,指导您了解如下内容:了解如何使用创建多群组区块链安装包;了解创建的多群组区块链安装包目录组织形式;学习如何启动该区块链节点,并通过日志查看各群组共识状态;学习如何向各群组发送交易,并通过日志查看群组出块状态;了解群组内节点管理,包括节点入网、退网等;了解如何新建群组。

qq_63235624的博客 2920

你以为你懂 Java 反射?看了这篇源码分析,我发现我以前都错了

摘要:本文讲述了一次生产环境Metaspace内存溢出的故障排查经历。事故源于一个通用数据导出功能中频繁使用反射调用method.invoke(),触发了JVM的"膨胀机制":当同一Method对象调用超过15次时,JVM会动态生成GeneratedMethodAccessor类,导致Metaspace被撑爆。文章分析了问题根源在于循环中反复调用getMethods()创建新Method对象,并提出了三种解决方案:缓存Method对象、改用MapStruct/MethodHandle工具

BUG猿的博客 770

【HDU 4825】Xor Sum

1.题目链接。题意:给定一个数组和N组询问,每组询问输出一下这个数组里和该元素异或的最大值。 2.字典树的应用,把数位当作字符串然后建一棵01字典树,这个数的高度最多是32层,然后对于每个数,找出数位之后,贪心的在树上找和它数位不一样的地方,从高位开始找,这样异或起来数值一定是最大的。 #include<bits/stdc++.h> using namespace std; #d...

YG爱木木 299

30天入门 SAP BTP 开发系列之七:动手在 SAP BTP 上开发第一个 ABAP 程序

本教程从理论转向实践,指导如何在SAP BTP上创建首个ABAP程序。首先通过Booster向导在Trial账号中配置ABAP环境,需确保已启用Cloud Foundry并创建Space。成功创建ABAP实例后,使用ABAP Development Tool连接环境:下载服务密钥文件,导入工具获取连接URL,即可建立项目开始编码。教程提供了从环境搭建到开发工具配置的完整流程,帮助ABAP开发者快速上手BTP云开发。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1680

hdu 4825 Xor Sum(trie+贪心)

hdu 4825 Xor Sum(trie+贪心) 刚刚补了前天的CF的D题再做这题感觉轻松了许多。简直一个模子啊。。。跑树上异或x最大值。贪心地让某位的值与x对应位的值不同即可。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include...

dhe56357的博客 149

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

HDU 4825 Xor Sum(Trie树 + 贪心

Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。Prometheus 为了让 Zeus 看到人类的伟大,随即同意...

hipamp的博客 214

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

HDU4825 Xor Sum(Trie树 + 贪心)

Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total Submission(s): 1265    Accepted Submission(s): 527 Problem Description Zeus 和 Prometheus

计算机技术 883

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

HDU 4825 Xor Sum(trie树+贪心)

根据异或的性质(相同得0,不同得1),如果要使得异或的值最大,那么s与k转化为二进制后要有尽量多的高位不同。这里用到了贪心的思想,我们优先考虑高位,使得高位相反,其次再考虑低位,这样才能使得异或的值最大。同时题目给出的内存比较大,然后就可以用trie树了。我们要建一个32层的二叉树,每一层的节点的两个子节点分别表示0和1,每次查询从高到低依次走相反的路径。

Noooooorth的专栏 1894

HDU4825 Xor Sum(贪心+Trie树)

Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。Prometheus 为了让 Zeus 看到人...

weixin_30332241的博客 79

hdu 4825 Xor Sum

题意:       给你n个数,然后给你m组询问,每组询问给你一个数,输出n个数中与该数亦或的最大的那个数,输出的是被亦或的那个数,不是亦或后的结果。 思路:       我用的是字典树+贪心,首先我们可以把前n个数拆成2进制,然后补全前导0,我是补成了34位,然后把他存在字典树中,对于每个询问,把他变成二进制,然后补全前导0,在字典树上查找,查找的时候用贪心的思想,因为前面的是高位,所

Ezereal的博客 670

HDOJ 4825 Xor Sum

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4825 题意:给出n个数,再给你m个数,问这m个数中分别能在这个n个数中找到能使这两个数的异或值最大的那个数。 暴力肯定爆时间,毫无疑问。 所以这道题我们要考虑建立字典树进行贪心来处理,很明显异或运算找最大值是要从高位开始,找有没有与目标数相应位置上不同的值,能找到就取,找不到就不取,这样从高位下

RaAlGhul的博客 566

HDU - 4825 Xor Sum 字典树 + 二进制匹配

HDU - 4825 Xor Sum Time Limit: 1000MS   Memory Limit: 132768KB   64bit IO Format: %I64d & %I64u Submit Status Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个

qq_18661257的专栏 1151

hdu4825Xor

#include<cstdio> #include<cstring> #include<queue> #include<vector> #include<cmath> using namespace std; typedef long long ll; typedef unsigned long long ull; const int ...

qq_36172410的博客 160

HDU 4825 Xor sum

trie树的异或和问题 本题是一道经典题,使用trie树维护所给出的集合,我们知道等比数列前n项的和比第n+1项小,所以本题可以使用贪心策略,对于每一个询问,我们从高位向低位匹配,寻找最大异或值,向下递归求解。 #include <iostream> #include <cstdio> #include <algorithm> #include &lt...

104

hdu - 4825 Xor Sum 01字典树

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4825 题意:对于每一个测试样例,给你n个数,然后m个询问,每个询问给你一个数x,要求你给出n个数中哪个数与x的异或和最大。 思路:考虑在二进制下对每一位进行贪心,从高位到低位,在最暴力的做法下,设有一个集合内包含了给定的n个数,从x的最高位开始,如果该位为1,则将集合中对应位为0的数删去,如果删完...

CoAAColA的博客 308

HDU 4825:Xor Sum(01字典树+贪心)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4825 题目是给出N个数,然后给出M个数,给出一个数X,求N个数中谁与X异或的值 最大,构建字典树然后进行贪心,对于一个数字将其化成2进制后,不足32位, 则前面补0,把每个数字都扩充够32位,然后从高位开始到低位构建字典树,然后 给出一个数X,照样转换成2进制,如果位数不足32位,前面

温姑娘的博客 428

【Trie树求最大异或】HDU - 4825 - Xor Sum

题目链接&lt;http://acm.hdu.edu.cn/showproblem.php?pid=4825&gt; 题意: 有一个集合,里面含有n个数。有m次询问,每次询问一个数和集合里面的数异或,使得到的值最大,应该和哪个数异或。 题解: 利用Trie树,将n个数的32位二进制从高位开始放进树中。将询问的数字在树里贪心的查询,这样复杂度是n*32。l #include&lt;ios...

Eliot的博客 304
上一篇: UVA10003---Cutting Sticks(简单区间dp)
下一篇: UVA1025---A Spy in the Metro(简单dp)
tokers
博客等级 码龄12年 71粉丝 700原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值