• 2024-10-26Bitset容器与优化
    Bitset是啥某种神奇的容器,用于存储二进制。头文件:#include<bitset>定义方法:bitset<5>Bit1("10011");bitset<5>Bit2(4);“<>”中的内容代表容器的长度,相当于一个数组,但是每一位只能存储0
  • 2024-10-09《 C++ 修炼全景指南:十四 》大数据杀手锏:揭秘 C++ 中 BitSet 与 BloomFilter 的神奇性能!
    本篇博客深入探讨了C++中的两种重要数据结构——BitSet和BloomFilter。我们首先介绍了它们的基本概念和使用场景,然后详细分析了它们的实现方法,包括高效接口设计和性能优化策略。接着,我们通过对比这两种数据结构的性能,探讨了在不同应用场景中的选择依据。最后,博客还涵盖
  • 2024-10-05[赛记] 冲刺CSP联训模拟1[衡中]
    几何100pts赛时打的$DP$没有用bitset优化过了,也是放过了暴力;考虑设状态$f_{i,j,k}$表示考虑到第$i$位,到第$j$位$x$和第$k$位$y$可不可取,直接转移即可;时间复杂度:$\Theta(|s||x||y|)$,应该是过不了的;点击查看暴力#include<iostream>#incl
  • 2024-10-04bitset
    1.位运算的常见函数__builtin_popcount(x)//x二进制内1的个数(unsignedint)__builtin_popcountll(x)//longlong版本__builtin_parity(x)//二进制下的1的个数的奇偶性__builtin_parityll(x)//longlong版本__builtin_ctz(x)//x二进制末尾0的个数__builtin_clz(x)//x二进
  • 2024-09-25[GYM103119K][2020 ICPC Asia Macau] Candy Ads 题解
    题意简述有\(n\)个广告,每个广告在一个时间段内占据二维平面的矩形,\(m\)个约束表示两个广告至少有一个要被选择,选择若干广告,满足所有约束且同时刻不能有重叠的广告。Kosaraju算法流程在正图上跑一遍DFS,给每个位置打上时间戳从时间戳大到小枚举点,在反图上跑DFS,这个时候对
  • 2024-09-112024.9 模拟赛日志
    目录NOD2301(20240904)NOD2304(20240905)2024年广州市赛第一试(20240907)2024年广州市赛第二试(20240908)金华一中24联训day15(20240910)SS240911(20240911)NOD2301(20240904)[A日记和最短路]字符串字典序题,\(a<b\iffc+a<c+b\),在Trie上维护倍增的哈希值。[B日记和欧拉函数]\(\varphi(
  • 2024-09-02【Ynoi 2016】掉进兔子洞
    LuoguP4688掉进兔子洞题意给定一个长度为\(n\)的序列\(a\)。有\(m\)次询问:每次询问给定三个区间,问将三个区间内同时出现的数删掉后,还剩下多少个数。每次询问独立。数据范围与约定\(1\len,m\le10^5\),\(1\lea_i\le10^9\)。题解首先发现,每次询问的答案形式为:\(
  • 2024-08-08bitset 学习笔记
    bitset有点厉害,必须要学了。介绍bitset可以看成是一个每个位置都是\(0\)或\(1\)的bool数组。与bool数组相比,它的空间复杂度是其\(\frac{1}{32}\),时间复杂度也是\(\frac{1}{32}\),还支持位运算,所以不论是用处还是效率基本薄纱了bool数组。可以作为卡常、压位操作、
  • 2024-08-02算法【位图】
    特别提醒:Python同学实现位运算的题目需要特别注意,需要自己去手动处理溢出和符号扩展等问题。比如:(n<<shift_amount)&0xFFFFFFFF一、位图原理其实就是用bit组成的数组来存放值,用bit状态1、0代表存在、不存在,取值和存值操作都用位运算。限制是必须为连续范围且不能过大。
  • 2024-07-30STL标准模板库
    STL(StandardTemplateLibrary)标准模板库是C++标准库中的一个重要组成部分,它提供了一组通用的模板类和函数,用于数据结构和算法的实现。STL的核心部分包括容器、算法和迭代器,这三者紧密结合,使得C++编程更加高效和灵活。vector是C++标准模板库(STL)中的一个序列式容器,它提供了
  • 2024-07-23P10480 可达性统计(拓扑,bitset 优化)
    link从数的角度来看,如果知道任意一个点能到达的点的数量,那么它的前驱节点一定也能到达,但是,只累加数的话无法处理可能存在重合点的情况。所以,考虑从集合的角度,设\(f(x)\)表示\(x\)能到达的点的集合如果\(x\)有邻点\(y_1,y_2,...,y_k\),那么\(x\)能到达的点就是它的邻点
  • 2024-07-22[namespace hdk] 64位 bitset
    功能已重载运算符[](int)~()+(bitset)+(unsignedlonglong)+=(bitset)+=(unsignedlonglong)>==<>=<=(bitset\unsignedlonglong)<<>>max()min()已定义函数intsize()返回bitset大小intarray_size()返回bitset占用的unsigned_longlong
  • 2024-07-07P4688 Ynoi2016 掉进兔子洞
    P4688Ynoi2016掉进兔子洞经典莫队加bitset。思路不难发现最终答案就是:\[(r_1-l_1+1)+(r_2-l_2+1)+(r_3-l_3+1)-3\timessize\]其中\(size\)表示3个区间内出现了多少个公共元素。看到这么多区间,不妨有把区间拆下来搞莫队的想法。先不考虑询问个数的限制,我们考虑使用
  • 2024-06-18bitset详解以及用法
    butset详解以及用法bitset是C++标准库中的一个类,它提供了一种方便的方式来操作位序列,常用于位运算和状态压缩。下面我将为您详细介绍bitset的基本概念、基本用法以及一些常用的成员函数。基本概念1、bitset可以看作是一个多位二进制数,其每一位都是0或1。2、它是
  • 2024-05-31Codeforces Round 949 (Div. 2)
    榜单#提交者=*ABCDEF1(2055)gutongxing20261388-1488900A#include<bits/stdc++.h>usingnamespacestd;intT,n,m;signedmain(){ scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); printf(&quo
  • 2024-05-18bitset专题
    bitsetbitset前身:普通状态压缩的优化以cf937G为例,对于邻接矩阵的由二维压缩到一维#include<bits/stdc++.h>usingi64=longlong;voidsolve(){intn;std::cin>>n;std::vector<std::string>g(n),w(n);for(inti=0;i<n;i++){
  • 2024-04-19C117 莫队配合 bitset P4688 [Ynoi2016] 掉进兔子洞
    视频链接:C117莫队配合bitsetP4688[Ynoi2016]掉进兔子洞_哔哩哔哩_bilibili   LuoguP4688[Ynoi2016]掉进兔子洞//莫队配合bitsetO(n*sqrt(n))#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<bitset>usin
  • 2024-04-08F - Oddly Similar
    F-OddlySimilarProblemStatementThereare$N$sequencesoflength$M$,denotedas$A_1,A_2,\ldots,A_N$.The$i$-thsequenceisrepresentedby$M$integers$A_{i,1},A_{i,2},\ldots,A_{i,M}$.Twosequences$X$and$Y$oflength$M$aresaidtobe
  • 2024-04-06ABC348F 题解
    一些注意点:一看到这种题就应该往bitset的方向想。如果用bitset,就应该跳脱之前的思维,尝试从最朴素的暴力重新想起。看到这道题,发现直接做非常的不可做的样子,考虑bitset。我们可以先枚举左端点\(l\)。这样,当我们枚举\(j\)时,对于所有的\(k\)使得\(a_{k,j}=a_
  • 2024-04-02C++bitset类型
    bitset类型我们介绍了将整型运算对象当作二进制位集合处理的一些内置运算符。标准库还定义了bitset类,使得位运算的使用更为容易,并且能够处理超过最长整型类型大小的位集合。bitset类定义在头文件bitset中。定义和初始化bitsetbitset类是一个类模板,它类似array类,具有固定的
  • 2024-03-28面试官:如何实现10亿数据判重?
    当数据量比较大时,使用常规的方式来判重就不行了。例如,使用MySQL数据库判重,或使用List.contains()或Set.contains()判重就不可行,因为MySQL在数据量大时查询就会非常慢,而数据库又是及其珍贵的全局数据库资源。《阿里巴巴Java开发手册》上也说了,如果单表数据量超过5
  • 2024-03-26[算法]分割等和子集算法 & bitset容器应用
    LeetCode416.分割等和子集1题目描述给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。1.1输入测试示例1:输入:nums=[1,5,11,5]输出:true解释:数组可以分割成[1,5,5]和[11]。示例2:输入:nums=[1,2,3,5]
  • 2024-03-06bitset 相关优化
    bitset基础用法operator[]:访问其特定的一位。operator==/!=:比较两个bitset内容是否完全一样。operator&/&=/|/|=/^/^=/~:进行按位与/或/异或/取反操作。bitset只能与bitset进行位运算,若要和整型进行位运算,要先将整型转换为bitset。operator<>/<<=/>>=:进行
  • 2024-02-27STL-bitset模拟实现
    #include<time.h>#include<string>#include<vector>#include<iostream>usingstd::cout;usingstd::endl;usingstd::string;namespacetest{/**位图概念*所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。
  • 2024-02-27面试官:如何实现10亿数据判重?
    From: https://mp.weixin.qq.com/s/l2yVtL5siHpxzNLuxJ3nkQ当数据量比较大时,使用常规的方式来判重就不行了。例如,使用MySQL数据库判重,或使用List.contains()或Set.contains()判重就不可行,因为MySQL在数据量大时查询就会非常慢,而数据库又是及其珍贵的全局数据库资源。