
位运算
位运算
*DDL_GzmBlog
再见锋芒,准备启程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[cf] 805 div3 F. Equate Multisets
tag:tag :tag: 传送门 :题意 :给定两个数组A[1....N]A[1....N]A[1....N],B[1...N]B[1...N]B[1...N]询问是否可以通过有限次操作使得B=AB=AB=A操作定义如下 :选中一个iii使得思路 :看到/2/2/2这种操作,我们需要联想到二进制我们发现B[i]∗2B[i]*2B[i]∗2相当于在二进制后面加了个0而对于第二个操作,就是相当于删除了二进制最后一位而对于B[i]∗2B[i]*2B[i]∗2我们可以看成A[i]/2A[i]/2A[i原创 2022-07-12 17:16:25 · 713 阅读 · 0 评论 -
[at] abc 258G - Triangle 三元组可达-暴力
tag:tag :tag: 传送门:题意 :给定一个010101完全图,111表示这两个点有边相连,000表示这两个点没有边相连询问有多少组三元组(i,j,k)(i,j,k)(i,j,k),满足两两之间有边相连思路 :暴力的做法n3n^3n3,因为图只存在010101,我们考虑使用位运算减去一层的枚举即 , 我们将状态存入中,然后枚举两行之间的状态,进行&\&&运算显然的如果&=1\&=1&=1那么,存在三个点是可达的,时间复杂度n2lognn^2lognn2logncode :...原创 2022-07-03 01:29:00 · 358 阅读 · 0 评论 -
[cf] 746 div2 C. Bakry and Partitioning
前言Tag:Tag:Tag:异或 树 dfs *1700传送门 :题意 :给定一棵树,你可以删除最少111,对多k−1k-1k−1 条边,询问是否可以使得删除边之后,每个连通分量中的异或和相等思路 :考虑删除一条边(k=2k=2k=2)的情况ax⊕(a1⊕a2....an)=0a_x \oplus(a_1\oplus a_2....a_n)=0ax⊕(a1⊕a2....an)=0也就是a1⊕a2⊕a3.....an=sum=0a_1\oplus a_2\oplus a_3.....a原创 2022-05-27 17:44:34 · 132 阅读 · 0 评论 -
[cf] Codeforces Round #793 (Div. 2) B.AND Sorting
前言tag:tag :tag: 位运算 &操作 交换传送门 :题意 :给定一个未排序的数组a[]a[]a[],我们需要找到一个最大的XXX,使得其可以在满足条件的情况下将a[]a[]a[]变为有序条件 :a[i]&a[j]=Xa[i]\&a[j]=Xa[i]&a[j]=X则可以交换思路 :因为&\&&只会把111变为0/10/10/1,不会把000变为111,所以&\&&会使得结果越来越小同样的对于数组中满足任原创 2022-05-23 12:47:30 · 251 阅读 · 0 评论 -
[牛客月赛49] C-圣
C.圣tag:tag :tag: 结论 位运算 数学分析传送门:题意 :给定一个数组a[]a[]a[],求⊕i=1n∣j=1n(ai&aj)\oplus_{i=1}^n|_{j=1}^n(a_i\&a_j)⊕i=1n∣j=1n(ai&aj)的值思路 :因为数据范围问题显然n2n^2n2必然是不行的我们考虑分析t=ai&ajt=a_i\&a_jt=ai&aj显然的 t<=ai∣∣t<=ajt<=a_i||t<=原创 2022-05-14 14:08:39 · 102 阅读 · 0 评论 -
[算法总结] 提高课---位运算 ! 64位整数乘法
龟速乘前言:基本思想Code:前言:快速幂 --> 乘法 – > 乘方 (反复平方法)龟速乘 --> 加法 – > 乘法提高思维的思想:对于每道题都要自己想清楚,这样做对不对一定要去多整理,多去看一下不同题目的关系(saber推荐一波 [狗头] ).基本思想不能直接去算两个数相乘,(技巧|| 把qmi里面的乘法换成加法即可)Code:#include <cstdio>typedef long long LL;LL qadd(LL a,原创 2021-05-30 18:56:02 · 176 阅读 · 0 评论 -
[luogu] P4144 大河的序列 位运算-证明题
前言太菜了传送门: https://www.luogu.com.cn/problem/P4144思路本题要求 一个序列里面的 所有数 按位& 之和 和 按位| 之和最大设 ans 为该序列当前答案设 x 为需要加进来的数考虑一下:& 按位且 (只有同时为1 才为1)ans>x : ans往x那边靠 逐渐变小ans=x : 肯定是不变的ans<x : ans逐渐往x 那边靠 逐渐变大(因此大&小 只会让大的变小)| 按位或(只要有1就是1原创 2021-09-25 11:09:12 · 167 阅读 · 0 评论 -
[nk] 牛牛吃米粒 位运算填数
前言太菜了传送门:https://ac.nowcoder.com/acm/contest/11179/A思路每个数的二进制表示唯一对于一个数 它可以拆分成 2^(i)+2(i-1)+…+2(1)…》也就是他的二进制表示所以我们只需要找到是否可以填满即可CODE#include <bits/stdc++.h>using namespace std;typedef unsigned long long LL;const int N =70;bool st[N];sig原创 2021-09-25 10:11:31 · 136 阅读 · 0 评论 -
[luogu] P1469 找筷子 位运算-异或
前言传送门: https://www.luogu.com.cn/problem/solution/P1469思路异或性质:A^A = 0A^0 = A因此根据这个性质我们可以找到 出现次数为奇数 的数字CODE#include <bits/stdc++.h>using namespace std;void solve(){ int n; cin>>n; int ans = 0; for(int i=1; i<=n; i++)原创 2021-09-25 10:17:19 · 214 阅读 · 0 评论