![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
位运算
文章平均质量分 50
1
kaka0010
退役ACMer/算法竞赛菜鸡
展开
-
Codeforces Round #368 (Div. 2) D. Persistent Bookcase 主席树套bitset
原题链接:https://codeforces.ml/contest/707/problem/D题意有一个二维01矩阵,接下来有四种操作i j 将第i行第j列的数字置1i j 将第i行第j列的数字置0i 将第i行的数字翻转k 回到第k次操作之后分析看到回溯操作,主席树基本就八九不离十了。然后考虑怎么处理每行的信息。01字符变换,可以用bitset高效处理。对于主席树的每个叶子节点我们开一个bitset容器,对于123操作都可以轻松搞定,然后是计算1的个数。直接用count函数统计可能会原创 2021-07-08 18:14:40 · 76 阅读 · 0 评论 -
P3293 [SCOI2016]美味 主席树+最大异或路径
原题链接:https://www.luogu.com.cn/problem/P3293目录题意分析code题意一家餐厅有n个菜,每个菜都有评价值ai。有m位顾客,他们对菜的期望值为bi,偏好值为xi。因此第i位客人认为第j样菜品的美味程度为bixor(ai+xi)b_i xor(a_i+x_i)bixor(ai+xi),而且他们有一个选择的范围是[l,r],问他们选择的美味值最高的菜是多少。分析看到异或运算,我们很容易想到01字典树的最大异或路径,特就是假设有两个数a,b。当a的第i位是1时原创 2021-07-07 13:10:25 · 98 阅读 · 0 评论 -
牛客练习赛3 B 贝伦卡斯泰露 折半搜索+hash
原题链接:https://ac.nowcoder.com/acm/contest/13/B目录题意分析Code题意给定一个序列有n个元素,问取出两个子序列长度均为n/2,能否取出完全相同的两个子序列。分析题目范围很小,n只有40,因此考虑二进制枚举。但2402^{40}240复杂度显然不能满足要求,但220∗22^{20}*2220∗2是可以的,所以我们用折半搜索的思想,先处理出前n/2的数据。从题目来看,要使两个子序列完全相同,那么前缀和后缀一定是相同的,因此在枚举的时候就可以把不满足条件的给筛原创 2021-04-11 19:31:18 · 111 阅读 · 0 评论 -
AtCoder Beginner Contest 184 F - Programming Contest 进制枚举+思维
原题链接文章目录题意分析题意给定n个物品,m是最大容量,求不超过最大容量的最大容量值。分析n范围是0到40,因此直接用二进制的枚举会超时,会达到240的时间复杂度。其中有一个小技巧,我们将物品分成两堆,然后进行枚举,最后会得到两堆的最优值。接着考虑合并两堆就可以了。Max = max(Max, ai)Max = max(Max, ai + bi)其中bi为可以取到的最优值,我们用二分去找就可以了。#include <iostream>#include <cstring&原创 2020-12-21 21:06:09 · 182 阅读 · 0 评论 -
牛客小白月赛25 J异或和之和 (组合数+位运算)
牛客小白月赛25 J异或和之和第一篇博客回顾一下上周的牛客小白月赛。先来看一下题目添加链接描述之前从来没有认识到逆元的重要性,直到被J题卡了快一个小时,赛后问了大佬才意识到自己犯了很严重的错误orz。先对题目分析一下,如果用一般的方法求出n的所有三元组再进行异或运算,那是必T无疑的,因此我们想到利用位运算的性质,如果三个数连续进行异或,只有两种情况会出1,分别是1 1 1之间的异或和1 0 0 之间的异或,那么我们只需要对每一位进行求组合数算出分别有几种出1的可能,然后依次相加就可以很容易得出结论原创 2020-05-21 14:53:56 · 416 阅读 · 0 评论