bitset
bitset在某些常数优化以及状态保存方面被称之为神器并不为过,主要表现在以下几个方面:
1. 状态表示。试想,用一个数来表示状态的极限是64位,而bitset可以保存任意位二进制数,并且修改简单,统计方便,并且支持批量操作。
2. 常数优化。图论的题,尤其涉及不带权的邻接图,算法经常动辄 n2,n3n^2,n^3 ,这个时候我们可以用n个bitset存储每个点的邻接情...
分类:
其他好文 时间:
2015-08-31 01:18:04
阅读次数:
304
bitset模板bitset可以看作bool数组,但优化了空间复杂度和时间复杂度,并且可以像整形一样按位与或。优化作用:常常碰到处理的数组只有0和1的变化,此时就可以使用bitset优化。比如求两个集合的交集可以使用按位与运算,求并集可以使用按位或运算#includebiset s(10); //....
分类:
其他好文 时间:
2015-08-30 12:46:19
阅读次数:
195
位操作Time Limit: 1000MSMemory Limit: 65536KTotal Submissions: 9064Accepted: 3626Description假设你工作在一个32位的机器上,你需要将某一个外设寄存器的第X位设置成0(最低位为第0位,最高位为第31位),将第Y位开始...
分类:
其他好文 时间:
2015-08-28 19:15:36
阅读次数:
159
Bloom Filter 是由Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此Bloom filter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见 Bloom filter 是牺牲了正确率和时间以节省空间。...
分类:
其他好文 时间:
2015-08-27 21:16:44
阅读次数:
587
用四种方法实现了将数组元素循环右移k个位置,相关的解释作为注释放在代码里面了。
package movearrayelement;
import java.util.BitSet;
public class MoveArrayElement {
/**
* 每次把数组中所有元素移动一个位置,移动k轮
* @param array
* @param k
*/
public ...
分类:
编程语言 时间:
2015-08-26 22:26:59
阅读次数:
179
昨天下午到宝山区找了妹子,今天中午回到公司。衷心希望妹子司考一次通过。下午做了会多校,有道题用的bitset,一直很不解到底bitset优化到了什么程度,开始在群里问了问,有巨巨回答是32倍。于是我就把bitset的源码翻了出来看,果然是这样。算是了结了一个心头大患吧。源码在这里。接着,从bitse...
分类:
其他好文 时间:
2015-08-20 20:39:23
阅读次数:
143
BZOJ 1703 [Usaco2007 Mar]Ranking the Cows 奶牛排名 bitset优化...
分类:
其他好文 时间:
2015-08-18 22:47:11
阅读次数:
441
bitset类型比整型值上的低级位操作更容易使用,简化了位集的处理。在定义bitset时,要明确bitset含有的位数,在尖括号内给出它的长度值。
注意位集合的编号从0开始,低位存低阶位。
最重要的一个问题:bitset的下标是从右边开始的!!!!很多人的博客都写错了,希望引起大家注意。
1.使用unsigned long值初始化bitset对象
若bitset类型长度大于uns...
分类:
编程语言 时间:
2015-08-15 12:05:57
阅读次数:
165
突然想写个系列,算是总结总结集训中遇到的各种黑科技吧,这是目录ACM的奇计淫巧_输入挂ACM的奇计淫巧_扩栈C++/G++ACM的奇计淫巧_bitset优化
分类:
其他好文 时间:
2015-08-13 20:02:55
阅读次数:
91
参考《21天学通C++》第25、第26、第28章节,对STL位标志、智能指针与C++异常处理进行介绍。
一、使用STL位标志
位是存储设置与标志的高效方法。标准模板库提供了可帮助组织与操作位信息的类。
1. bitset类
std::bitset不是STL容器类,因为它不能调整长度,这是一个实用类,针对处理长度在编译阶段已知的位序列进行了优化。需包含#include 。
2. 实例化bi...
分类:
编程语言 时间:
2015-08-09 18:49:13
阅读次数:
149