首页 > 兔子的区间密码
头像 hnust_yangyanjun
发表于 2020-08-09 15:19:39
题意:给与一个区间,求在区间选二个数的异或值最大为多少? 思路:对于区间[L,R]: ①:L的二进制串长度小于R的二进制串长度,例如L=101(5),R=1110(14)。由于3<4,所以111和1000一定在[L,R]区间,因为1000为二进制长度为4的最小值,111为二进制长度为3的 展开全文
头像 lifehappy
发表于 2020-07-30 16:00:09
兔子的区间密码 思路 结论显然,我们从的二进制最高位出发,碰到的第一位不同的数即可得到从这一位向下,所有的二进制数位都可以得到为,因此我们只需要从高位开始枚举即可,然后得到第位是第一个不同位然后即可得到答案。 代码 #include <bits/stdc++.h> #define mp 展开全文
头像 Kur1su
发表于 2020-07-30 19:00:15
Description 有一只可爱的兔子被困在了密室了,密室里有两个数字,还有一行字:只有解开密码,才能够出去。可爱的兔子摸索了好久,发现密室里的两个数字是表示的是一个区间[L,R]而密码是这个区间中任意选择两个(可以相同的)整数后异或的最大值。比如给了区间[2,5] 那么就有2 3 4 5这些数, 展开全文
头像 sunrise__sunrise
发表于 2020-07-30 14:45:50
题目意思 Solution #pragma GCC target("avx,sse2,sse3,sse4,popcnt") #pragma GCC optimize("O2,O3,Ofast,inline,unroll-all-loops,-ffast-math") #include < 展开全文
头像 程序蒟蒻
发表于 2020-08-15 17:37:18
https://ac.nowcoder.com/acm/problem/20860 思路: 要想让异或之后的结果最大,肯定从高位开始就要尽量大,也就是两个数的高位尽量不同。 如果lr的二进制位数不同,首先高位补0补齐,然后看我们能否在r的最高位取1的时候r的最高是不是不一样(如果一样,那 展开全文
头像 dilingtian
发表于 2022-11-23 19:37:34
结论:从高位计算,第一个不相同的之后全部为111 假设lll,rrr在第iii位开始不相同,iii位之前的异或之后全为000,之后的我们可以保证凑成不一样的,异或之后全部位111。这样我们的结果就是从iii开始往后全为111的二进制,将二进制转换位十进制输出即可。 AC代码 #include < 展开全文
头像 江三
发表于 2020-08-06 18:07:32
一.题意 给你一个区间 求两个数异或最大 二.题解 由于数据很大,所以不能暴力找而题目说到异或最大,其实就是让我们往位运算方面/二进制方面去想让这个数最大,就是尽量让高位为 1比如[111101,110011]这种情况可以发现最高两位的 1 两者都会异或抵消,所以最大的贡献位在第三位从第三位开始可以 展开全文
头像 昵称很长很长真是太好了
发表于 2020-07-30 16:31:15
题意:有一只可爱的兔子被困在了密室了,密室里有两个数字,还有一行字:只有解开密码,才能够出去。可爱的兔子摸索了好久,发现密室里的两个数字是表示的是一个区间[L,R]而密码是这个区间中任意选择两个(可以相同的)整数后异或的最大值。比如给了区间[2,5] 那么就有2 3 4 5这些数,其中 2 xor 展开全文
头像 zzugzx
发表于 2020-07-31 01:18:37
题目链接 题意:题解: AC代码 /* Author : zzugzx Lang : C++ Blog : blog.csdn.net/qq_43756519 */ #include<bits/stdc++.h> using namespace std; #de 展开全文
头像 东溪看水
发表于 2020-08-03 14:11:56
题目 给定区间 ,求这个区间中任意选择两个(可以相同的)整数后异或的最大值。 解题思路 如果 与 相等,直接返回 0。 如果 :判断 与 的最高位是否相等。如果相同,则这个二进制位不会影响结果,因为从范围内任意选择两个数它们的高位都是这样,异或后相互抵消。继续比较下一个高位,直到遇到 和 展开全文