给40亿个不重复的unsigned int的数,没排序,然后再给一个数,如何快速间断这个数是否在那40亿个数中
2015-09-08 20:43
501 查看
40亿个数,如果用无符号的long long数组来存,那么使用数组里的每一个元素的每一位代表一个数,具体为:
a[0] ---- 0~63
a[1] ---- 64~127
a[2] ---- 128~190
...
那么,40亿 bit/64 = 6.25*107 *8 byte = 500MB , 内存就满足了。
a[0] ---- 0~63
a[1] ---- 64~127
a[2] ---- 128~190
...
那么,40亿 bit/64 = 6.25*107 *8 byte = 500MB , 内存就满足了。
#include <iostream> using namespace std; #define maxn 62500000 unsigned long long a[maxn]; int main() { unsigned n, m, x; while (cin >> n >> m) { memset(a, 0, sizeof(a)); for (int i=0; i<n; i++) { cin >> x; a[ x>>5 ] |= 1 << (x & 0x3F); } for (int i=0; i<m; i++) { cin >> x; if ( a[ x>>5 ] & ( 1 << (x & 0x3F) ) ) { cout << "Yes" << endl; } else { cout << "No" << endl; } } } }
相关文章推荐
- gulp-less插件之less文件编译成css
- 自定义标签
- POJ 1844:Sum ”滚动“数组
- MySQL学习笔记-join语句类型
- ios-自定义画板
- Content Provider(内容提供器),Broadcast(广播), Service(服务)
- Font.Style(Delphi)
- xydiyidao-9月5日作业
- C++中虚函数与纯虚函数以及虚继承的相关知识
- 1039. 到底买不买(20)
- C#反射取得类的字段与方法信息
- Font.Style(Delphi)
- openstack部署(1)-准备工作
- xydiyidao-9月5日作业
- 字符串左移
- python将对象写入文件,以及从文件中读取对象
- Lua:模块、使用位操作BitOp、C API(Lua与C互相调用)
- 你知道数据库索引的工作原理吗?
- 爱与赤诚
- LA 3126 - Taxi Cab Scheme【DAG最小路径覆盖】