集训笔记1-set,map,hash,字符hash
来源:互联网 发布:儿童手表软件 编辑:程序博客网 时间:2024/06/02 12:33
这是萌教主版的,不是很全:
set:
因为元素不重复;count(i)统计i个数 return 1/0;
相当于vis{maxn};
s.clear() 清空;
s.erase(i) del i;
复杂度为log(n);二叉平衡树实现;
性质:元素为有序(顺序);
遍历方法:
for(set<int>::iterator iter=s.begin();iter!=s.end();iter++)
printf("%d\n",*iter);
s.end() 为最后一个元素的下一个;
iter只能为++;不能为=+1,=+2;
求set的最大元素:
set<int>::iterator iter=s.end();
iter--;
printf("%d\n",*iter);
multiset s1 允许有重复元素;
s1.erase(i) del all i;
若只删一个元素;
multiset<int>::iterator iter=s.find(i);
s.erase(iter);
如果没有相应元素;find返回s.end();
lower_bond(i);第一个比i大的
****************************
map:
map<s1 ,s2> s1为[ ],s2为返回类型;
dic[1]; 赋值为s2的默认;
时间复杂度为log(n);
*********************************
hash :
冲突:两个元素有相同的散列值;
解决冲突:
1:重选一个好的hash函数;增加不确定性和利用多个位;可以取x%1000007;
2: hash table;
hash insert 复杂度为o(1);
hash find平均复杂度为o(1);
******************************************
字符hash:
用27进制来表示ab...z;a为1;a,aa;
用unsigned可以自动取2^64模,就是爆unsigned long long;
可以不管冲突,重复的概率可以忽略;
为x进制;
h[i]=s[n-1]x^(n-1-i)+...+s[i];
Hash(i,l)=h(i)-h(i+l)x^(l);//i往后的l位;
解决问题:
1:判断子串(两串);
2:判断子串(一个长串与多个子串);{小串长度,小串数量}
3:最长公共子串;
4:最长回文;
while(low<=high){
int mid=(low+high)/2;
if(ok(mid)){
low=mid+1;
}
else
high =mid-1;
}
- 集训笔记1-set,map,hash,字符hash
- Hash Map / Hash Set
- map,set,unordered_map,hash总结
- java----map,set,hash的源码分析---篇1
- POJ1200(Hash 或 Map 或 Set)
- hash map
- [multi]set/map/table/hash 及海量数据相关问题
- Codevs 2875 RY哥查字典 hash || set || map
- 5.HashSet、Set、Hash算法、List、LinkedList、ArrayList、Map、Collections
- hdu-5183(set &&hash)
- stl之hash set
- Set/ZSet/Hash/List
- hash map的使用
- c++中的hash map
- poj1840 map + hash
- C++ hash map
- hdu 1004 hash map
- C++中的hash Map
- 黑马程序员-HashSet存储自定对象如何确定元素唯一学习日记
- Spring依赖注入 — 值设置与引用
- pdf文件如何根据目录快速批量生成书签
- Spring依赖注入 — 注入依赖检查
- 大数问题 hdu 1002
- 集训笔记1-set,map,hash,字符hash
- C# 各种数据类型之间转换总结
- 服务器的家用路由设置
- 租嘴着滋渍撞阻转鬃卒子钻总装邹滋xbickb
- Spring依赖注入 — util命名空间配置
- Android 各厂家驱动一揽表
- Spring 依赖注入
- HDU3459:Rubik 2×2×2(IDA)
- 计科1111-1114班第七周讲义、课外作业(动态规划,截止日期:2014年4月25日23点-周五晚,学委飞信通知同学)