- 2025-01-23[BZOJ4671] 异或图 题解
我能说什么!抽象了这!看到\(n\le10\)的黑题顿感大事不妙。我们考虑设\(f(i)\)表示将\(n\)个点划分为至少\(i\)个连通块时的方案数。我们可以暴力枚举每个点在哪个连通块里。划分方案是\(Bell(n)\le21147\)的。显然的,相同块内暂时忽略,不同块间不能有边。于是我们将每
- 2025-01-21「PR #14」安顿
考虑要求划分数量最多,假如所有数都不等于\(X\)那么一个一个划显然最好,有\(X\)的话\(X\)所在段必须有至少两个元素,再继续讨论。当\(X=0\)时,显然将其划分到旁边的一个段内,所以其答案就是非\(0\)的元素数量。但是我们还没有清楚为什么要把这种情况单独拿出来。这种做法不能
- 2025-01-16位运算练习
判断字符是否唯一面试题01.01.判定字符是否唯一-力扣(LeetCode)思路此题可以用位运算解决,我们这里使用位图。位图:即定义一个数字将其转换为32个二进制位,将其初始化为0,每个字母代表一位,判断每个位置是否为1,如果为0,则将其加一(相当于记录此位置存在一种字母);如果为1,则之前这
- 2025-01-16Xorto
给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为0。暴力,每次找一个中点,找左右两边异或值一样的区间#include<bits/stdc++.h>#defineintlonglong#defineTEST#defineTESTSint_;cin>>_;while(_--)usingnamespacestd;void
- 2025-01-09线性基
这几天很困而且肚子吃坏了导致这一章学的奇慢,此事在我的犇犇中亦有记载。线性基就是向量基底。oi里头喜欢用异或线性基,就是把原本基底表示的求和改成异或。所以可以拿来解决异或问题。称集合\(B\)为\(S\)的线性基当且仅当\(B\)对于它代表的集合\(S\)满足\(S\)任一子
- 2025-01-092025 1.9 做题记录
CF1787D这里有个很典的trick。我们将\(i+a_i\)向\(i\)连边,那么只要一个\(<0\)或\(>n\)的点能够走到\(i\),就说明\(i\)能在有限的次数内出去。这玩意跑个拓扑排序即可。那么现在我们可以考虑从\(1\)开始走,因为只能修改一个点的值,记\(u\)为\(1\)走若干步后到达的
- 2025-01-08「GDKOI2023 提高组」异或图
可以说是计数大杂烩了吧。我们试着进行容斥:每次选定若干条边,钦定这些边两端的值相等。容斥系数显然是\((-1)^{|E|}\)。然后对这些连通块我们把它们的最小值当作\(a_i\)拿来跑异或的问题。实际上我们就是要把原图划分成若干连通块,答案就是每个连通块的容斥系数之积乘上新异或问
- 2025-01-07【优选算法】Bit-Samurai:位运算的算法之道
文章目录1.常见位运算总结1.1基础位运算符号1.2给一个数n,确定它的二进制表示中的第x位是0还是11.3将一个数n的二进制表示的第x位修改成11.4将一个数n的二进制表示的第x位修改成01.5位图的思想1.6提取一个n二进制表示中最右侧的11.7干掉一个数
- 2025-01-05关于此题CF[Hello 2025] 2057C - Trip to the Olympiad的一些总结
传送门题目大意:给定两个数l,r,试求l~r中选三个数a,b,c,使得\((axorb)+(bxorc)+(axorc)\)的值最大。有关此类异或最大的题目,首先想到的是确定最高位,因为假如说异或后二进制下k位置为1,那么此时答案就已经比k位置不为1,而k以后的位置都是1的情况要大了。而观察l,r这两个数,我
- 2025-01-04java简单算法题001(保姆级教学)
问题描述在一个班级中,每位同学都拿到了一张卡片,上面有一个整数。有趣的是,除了一个数字之外,所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上的数字是什么。要求:设计一个算法,使其时间复杂度为O(n),其中n是班级的人数。尽量减少额
- 2025-01-04LeetCode136.只出现一次的数字
题目给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。示例1:输入:nums=[2,2,1]输出:1示例2:输入:nums=[4,1,2,1,2]输出:4
- 2025-01-02线性基学习笔记
线性基很好理解,可以理解成\(n\)维的向量。我们先考虑\(n=2\),这是我们最熟悉的,可以在平面直角坐标系上表示出来。众所周知,在一个平面内,两个不共线的向量\(e_1\)和\(e_2\),可作为基底,即所有可在原坐标系上表示的向量\(x\)均可被\(e_1\)和\(e_2\)表示为\(\lambdae_1+
- 2025-01-02关于此题E - Maximize XOR(Atcoder ABC 386)搜索技巧的一些总结
传送门题目要求n个数中选k个数异或起来最大,我们想到字典树中最大异或和这一经典问题,但是很明显字典树只能解决任选两个数的最大异或,而此题是任选k个,那我们走投无路只能考虑爆搜。首先可以很容易写出一个暴力的搜索:voiddfs1(longlongpos,longlongsum,longlongkk){i
- 2025-01-02【算法一周目】位间流转,数字律动——洞察 C++ 位运算中的精妙与哲思
文章目录常见位运算1.位1的个数2.比特位计数3.汉明距离4.只出现一次的数字5.只出现一次的数字III6.只出现一次的数字II7.判定字符是否唯一8.丢失的数字9.两整数之和10.只出现一次的数字II常见位运算判断一个数的二进制表示的第x位是0还是1(n>>x)&1
- 2025-01-01找筷子(异或运算)
题目链接:https://www.luogu.com.cn/problem/P1469#submit题意:找奇数个筷子的长度思路:异或运算(如果开map会MLE)按位异或运算:每个位对比相同为0,不同为1重要性质:x^x=0,x^0=x所以我们可以直接算出所有数的异或和,即为答案其他性质(待补充):异或运算顺序不重要#include<bits/std
- 2024-12-31逻辑运算(与、或、非、异或、同或、与非、或非)
与(AND)全一为一,有零为零。或(OR)全零为零,有一为一。非(NOT)一变零,零变一。异或(XOR)相异为一,相同为零同或(XNOR)相同为一,相异为零。与非(NAND)先与后非(全一为零,有零为一)。或非(NOR)先或后非(全零为一,有一为零)。与(AND)逻辑与运算,运算规则:全一为一,有零为零。即只有两个操作数都为
- 2024-12-30Solution - Luogu P11472 命运黄之瓜
因为\((a_i,b_i)\)虽然是对的形式,但是异或是同时的。于是可以考虑把两元先缩为一元,只需要让\(a_i,b_i\)互不干扰即可。那就可以把\((a_i,b_i)\)当作数\(c_i=a_i\times2^{31}+b_i\)。那么最后\(c_i\)异或出来的结果\(c\),就可以还原出\(a=\lfloor\frac{c}{2
- 2024-12-29leetcode1803 统计异或值在范围内的数对有多少
给定数组nums[n]和两个整数low与high,问有多少对(i,j)满足0<=i<j<n,并且low<=(nums[i]^nums[j])<=high。1<=n<=2E4;1<=nums[i]<=2E4;1<=low<=high<=2E4分析:1、把区分问题拆分为两部分,记f(x)表示不超过x的个数,那么f(high)-f(low-1)就是答案,只需要实现f(x)即可。2、从
- 2024-12-29异或线性基学习笔记
更好的阅读体验。前言本文的线性基指异或线性基。由于作者太菜了本文的语言不会特别规范。简介线性基简称基,它是一个数的集合,并且每个序列都拥有至少一个线性基。线性基有三个性质:线性基中的几个数异或后不能得到\(0\)。线性基中的数在异或后能得到原序列中的所有数。
- 2024-12-29leetcode2935 找出强数对的最大异或值II
给定数组nums[n],如果一对整数x和y满足|x-y|<=min(x,y),则称其为强数对。需要从nums[n]中选出一个强数对,并且异或结果最大。1<=n<=5E4;1<=nums[i]<2^20分析:trie+双指针。不妨设x<=y,对|x-y|<=min(x,y)变形得:x<=y<=2x,也就是说只能在[x,2x]范围内选择,可以用双指针来维护有效范围。/
- 2024-12-29leetcode1707 与数组中元素的最大异或值
给定数组nums[n]和查询数组queries[m],其中queries[i]=[xi,mi],第i个查询表示nums[n]中不超过mi的所有元素与xi异或的最大值。1<=n,m<=1E5;0<=nums[i],xi,mi<=1E9分析:01trie+离线。将询问按mi从小到大排序,将nums[n]从小到大排序,每次处理询问前,把不超过mi的数都加入trie,回答询问。
- 2024-12-282024-12-28:求出出现两次数字的 XOR 值。用go语言,给定一个数组 nums,其中的数字出现的频率要么是一次,要么是两次。 请找出所有出现两次的数字,并计算它们的按位 XOR 值。 如果没
2024-12-28:求出出现两次数字的XOR值。用go语言,给定一个数组nums,其中的数字出现的频率要么是一次,要么是两次。请找出所有出现两次的数字,并计算它们的按位XOR值。如果没有数字出现两次,则返回0。1<=nums.length<=50。1<=nums[i]<=50。nums中每个数字要么出现过一
- 2024-12-26洛谷 P3293 [SCOI2016] 美味
题目描述一家餐厅有\(n\)道菜,编号\(1,2,\ldots,n\),大家对第\(i\)道菜的评价值为\(a_i\)。有\(m\)位顾客,第\(i\)位顾客的期望值为\(b_i\),而他的偏好值为\(x_i\)。因此,第\(i\)位顾客认为第\(j\)道菜的美味度为\(b_i\oplus(a_j+x_i)\),\(\oplus\)表示异或运
- 2024-12-25# [THUSC2015] 异或运算
P5795[THUSC2015]异或运算题目描述给定长度为\(n\)的数列\(X={x_1,x_2,...,x_n}\)和长度为\(m\)的数列\(Y={y_1,y_2,...,y_m}\),令矩阵\(A\)中第\(i\)行第\(j\)列的值\(A_{i,j}=x_i\\operatorname{xor}\y_j\),每次询问给定矩形区域\(i∈[u,d],j∈[l,r]\),找出第
- 2024-12-25136. 只出现一次的数字
只出现一次的数字给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。示例1:输入:nums=[2,2,1]输出:1示例2:输入:nums=[4,1,