
位运算
文章平均质量分 74
位运算
Happig丶
我的孤独,虽败犹荣
展开
-
异或高斯消元小结
问题引入给出如下异或线性方程组aij=bk=1/0a_{ij} = b_k = 1/0aij=bk=1/0,若无解输出−1-1−1,否则输出解的个数。{a11x1⊕a12x2⊕...⊕a1nxn=b1a21x1⊕a22x2⊕...⊕a2nxn=b2...... &n原创 2021-03-05 11:35:53 · 504 阅读 · 2 评论 -
牛客练习赛76 E - 牛牛数数(线性基+二分)
传送门题目大意给出nnn个数,然后给定一个kkk,求出这nnn个数任何子集(非空集)的异或和得到的所有数中大于kkk的有多少个。解题思路看到任何子集的异或和,不难线性基,假设线性基中有cntcntcnt位元素不为000,那么显然得到的结果共有2cnt−12^{cnt}-12cnt−1个不同的数(有0的话就再加一),求有多少个大于kkk的数,显然可以数位DP,或者通过查询线性基异或的第KKK小的数,然后二分上界即可。下面代码是二分。#include <bits/stdc++.h>u原创 2021-01-18 11:30:07 · 248 阅读 · 0 评论 -
洛谷 P4869 albus就是要第一个出场(求一个数在线性基中的排名)
传送门题目大意给出一个包含nnn个元素[1,n][1,n][1,n]的集合,将所有子集(包括空集)的异或和全部排序得到一个序列,每次给定一个一定存在的数xxx,求出其下标(从111开始)。解题思路看到这个不难想到线性基,线性基实际上就是上述序列的不可重复集,但是如何知道一个数会重复多少次呢?首先对前几个nnn打表,我们发现得到的异或集合中所有的数出现的次数都是相同的,且都是222的幂次,这暗示着有规律。设线性基的大小为cntcntcnt,也就是说这nnn个数里面只有cntcntcnt个可以插入,原创 2021-01-17 21:36:35 · 211 阅读 · 0 评论 -
线性基
异或和给定一个大小为nnn的集合AAA,其中所有元素相异或的结果为异或和,即a1 xor a2 xor a3 ... xor ana_1 ~~xor~~a_2~~xor~~a_3~~...~~xor~~a_na1 xor a2 xor a3  原创 2021-01-17 15:27:35 · 181 阅读 · 0 评论 -
位运算小总结
位运算一、位操作符(C++写位运算记得左右移的优先级比加减法都低)& 与运算 两个位都是 1 时,结果才为 1,否则为 0,如1 0 0 1 1& 1 1 0 0 1--------------1 0 0 0 1任何数和int最大值(0xffffffff-1)作与运算得到的都是这个数本身a为任意整数,b为2^n时,求a%b可以使用与运算a&(b-1)...原创 2019-10-09 20:53:48 · 384 阅读 · 0 评论 -
n皇后位运算算法
回溯法求出每个格子(x,y)的y-x差值,会发现同一主对角线的差值相同求出每个格子(x,y)的x+y的和,会发现同一副对角线的和相同那么我们由ans==ans[j]判断是否同一列,cur-ans[cur]==j-ans[j]判断是否同一主对角线,cur+ans[cur]==j+ans[j]判断是否同一副对角线:int ans[1005];int n,cnt;void solve(i...原创 2020-04-18 22:46:33 · 510 阅读 · 0 评论 -
牛客国庆派对Day1 F - Light Emitting Hindenburg(常见位运算思路)
传送门题目大意虚假题意:&$&@(*$&@&#&…(万恶的国外题目,开了各种翻译都看不懂题,无语)真实题意:给出nnn个数,从中选出kkk个数使其作与运算得到的结果最大解题思路这种思路还是比较重要的,之前见到过更难的,也就是nnn个数里面选出kkk个数作异或使其异或和最大,这个需要用字典树维护,但是如果是与运算就不需要了,因为对于每一位来说只有所有的数全为111这一位才有贡献。具体思路为:从高到低考虑每一位,然后遍历所有可用的数,如果能选出大于等于kkk原创 2020-10-08 15:55:37 · 174 阅读 · 0 评论