题意:给你一个序列a, 问a[i] ^ (a[j] & a[k])的最大值,其中i < j < k. 思路:我们考虑对于每个a[i]求出它的最优解.因为是异或运算,所以我们从高位向低位枚举,如果这一位a[i]是0,我们就在a[i]的右边找两个位置让它们按位与起来这位是1.那么,我们贪心的保留可以通过按位与凑出某个二进制数的最靠右的两个位置.这个可以通过dp的方式预处理出来.之后,我们枚举每一个数a[i],先找出它的哪些位是0,之后从高位到低位枚举,判断这一位是否可以变成1.如果之前已经…
传送门. 位运算的比较基本的题. 考虑枚举\(i\),然后二进制位从大到小考虑, 对于第\(w\)位,如果\(a[i][w]=1\),那么对\(j.k\)并没有什么限制. 如果\(a[i][w]=0\),那么我们希望\((a[j]~and~a[k])[w]=1\),结合前面的限制,就是给定\(x\),问有没有\(x∈a[j]~and~a[k](i<j<k)\). 那么这应该是做一个高维后缀max和次max就能解决的事. Code: #include<bits/stdc++.h> #…
http://codeforces.com/contest/734/problem/F 因为 x + y = (x & y) + (x | y) 有了这个公式后,然后应该手动模拟一下,把公式化简.一开始的时候知道有这个公式,但是自己却不动手.动手能力太差.思考能力太弱了. 如果你肯动手,这题是可以化简的,当然后面的还需要一些技巧来判断 b[i] + c[i] = (a[i] + a[j] )(1 <= j <= n) 这是根据我们的公式得来的. 所以b[i] + c[i] = n *…
题面传送门 题意:求 \(\max\limits_{i<j<k}a_i|(a_j\&a_k)\). \(1\leq n \leq 10^6,1\leq a_i\leq 2\times 10^6\) u1s1 这题算高维前缀和里不那么 sb 的题,虽然代码也很简单. 很容易想到一个贪心,从高到低枚举每一位,能填 \(1\) 就填 \(1\),不能填 \(1\) 就填 \(0\). 于是本题转化为一个问题:是否存在某个 \(i,j,k\) 使得 \(x\) 为 \(a_i|(a_j\&am…
wo integers x and y are compatible, if the result of their bitwise "AND" equals zero, that is, a&b = 0. For example, numbers90(10110102) and 36(1001002) are compatible, as 10110102&1001002 = 02, and numbers 3(112) and 6(1102) are not com…
CF1208F Bits And Pieces 传送门 思路 这里要运用SOS-DP的思路(\(\text{Sum over Subsets}\)).我在另外一篇博客里介绍过,如有需要可以搜索一下我的博客. SOS-DP是记录每个\(mask\)所有子集的信息,而这道题只需要记录每个\(mask\)所有超集的信息即可.\(dp[mask]\)记录的是能满足\(mask\)是其的子集的所有数中坐标最大的两个.我们枚举\(a_i\),然后贪心的按位取就可以了.具体细节可以看代码. 代码 #inclu…
接上文leetcode - 位运算题目汇总(上),继续来切leetcode中Bit Manipulation下的题目. Bitwise AND of Numbers Range 给出一个范围,[m, n](0 <= m <= n <= 2147483647),返回这些数字的与运算结果. 直接逐个做与运算,TLE,我们得发现高效解法. 我们把[0, 15]用二进制码表示出来: 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0…
You are given n strings s1, s2, ..., sn consisting of characters 0 and 1. m operations are performed, on each of them you concatenate two existing strings into a new one. On the i-th operation the concatenation saisbi is saved into a new string sn + …
C. Short Program time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Petya learned a new programming language CALPAS. A program in this language always takes one non-negative integer and retur…