ACM练级日志:set
STL这个东西有时候会出乎意料的好用,第7篇那个让我写了200行的Treap用set这个玩意可以省掉很多代码……所以之后又用set重新写了一遍,正好以前也没用过set,记录一下,万一下次还有呢。
set需要开#include<set>,包含set和multiset;set是一个排好序的数据结构,不管你以什么顺序塞进去的,里面都是排好序的,比如你塞5,2,9,1进去,set里面就是1,2,5,9. set和multiset的区别就在于multiset允许重复,就是可以有1 2 2 2 3 5 这样的,set不可以有。
定义一个set的方法是 set<int> the_set,两个尖括号里面就是set内的数据类型。
set是一种STL中的“容器”,对于容器,需要一种叫迭代器的指针一样的东西,定义指针的方法是set<int> :: iterator p_set,就定义了一个迭代器p_set,它可以用来指set<int>。
当然那个迭代器的创建代码看着就让人烦,有些人是这么干的:开头先写上typedef set<int>::iterator Set_PType, 这样以后只要Set_PType p_set就可以了,看起来就舒服多了。
set常用的函数:
the_set.insert(x) 插入x
the_set.find(x) 查找x(如果没有找到,返回的是the_set.end() )
the_set.erase(p_set) 删掉p_set这个位置上的元素
the_set.upper_bound(x) 查找第一个比x大的元素的位置
the_set.lower_bound(x) 查找第一个比x大或等于的元素位置
当然,也可以用自定义类型放进set里,可以用比较小的代价实现哈希的效果。比如HDU 4277,1w x1w x1w的需要记住的量用三维数组是存不下的,我就用了set<ttype>,其中ttype就是一个三元组,就可以搞定了。但是需要注意!! 这种自定义类型必须要重载小于号(否则编译会出错),而且一定要重载对,否则会出现你找结构体的时候找不到的情况。明明你s.insert(t)了,当你再想找t的时候却发现找不到,十有八九是重载小于号的部分写错了。这道题就是这里让我查了半天。
所以一些平衡树的题(还有需要用哈希的题)用set之类的做可以省很多事。
ACM练级日志:set相关推荐
- ACM练级日志:HDU 4274
是挺简单的一道题,但是却无限WA,总共修改了这么几个错误: 第一,每个人都至少要有一块钱工资,比如1号下面有2号,3号,2号有1块钱,3号有一块钱,那么1号至少要有3块钱才行,如果给出条件说1 < ...
- ACM练级日志: POJ 2155、1151
这些日志仅供以后防止自己出现过去犯过的错误,起到一个注记的作用.若其他的ACMer觉得有用的话,本人也感到欣慰~ 最近一直在练线段树,说说线段树的"染色问题"和"计数问题 ...
- ACM练级日志:ACM2013 南京网络赛
这篇日志是用来反省用的-- 本场比赛我们总共A3题,我1题,ztb2题,但是因为我的博弈树搜索卡了,导致我们没能上第四道题,虽然前面三题很顺利,但是这致命的一题还是卡死了我们的队伍. 先说说题吧,10 ...
- ACM练级日志:HDU 4433 Locker
天津现场赛的一道题,说有两个密码串,每次你可以转第一个串连着的最多三个数,问最少转多少次能把第一串转成第二串. 开始以为是搜索,后来一看n<=1000直接吓尿-- 后来以为是字符串,但是怎么做也 ...
- ACM练级日志:Level 3的线段树标记下传
前几日参加了西山居比赛,里面有一道线段树题,代码量奇大,不过就是稍微变了点花样的标准线段树Lv3题,就是插入删除一些线段,然后问你其中最左边的长度至少为x的线段在哪儿.这道题前天调了2个小时终于AC, ...
- ACM练级日志: POJ 1376
本来是因为另一道题过不去而来找一道搜索题虐一下的,结果自己反而被虐了-- 这是一道很纯粹的BFS寻路题,写的时候因为比较急躁,犯了不少错误.写题的时候还是不能着急啊,尤其是比赛的时候更为紧张,稍微一错 ...
- ACM练级日志:微软编程之美比赛测试赛-3(高精度相关)
微软的这个测试赛也不是那么水,看第一题那个不友好的A+B也就能猜出一二,第三题那个套着高精度的DP是无数NOIP小白的噩梦,包括我在内.不过学习了面向对象程序设计之后似乎对以前处理高精度的方法重新地认 ...
- ACM练级日志:POJ 3074 数独与DLX
各位还在使用百度空间的同学们,请原谅最近被我刷屏-- 数独是DLX建模的最经典应用,它最好地示范了"行=决策,列=约束"的建模方法,配合快速的DLX深搜,使它成为了目前最快的求解数 ...
- ACM练级日志:带权并查集与食物链
最近终于干掉了高中两年都没有搞定的题目:食物链,就是那个A吃B,B吃C,C吃A这道NOI的经典题.当年自己写了200多行,把自己都写碎了,也没弄出来,最近学习了带权并查集,终于搞定了这道题. 首先说说 ...
最新文章
- php循环输出sql数组吗,在PHP中循环SQL结果 – 没有获得整个数组
- ccentos 7下安装php5.6并使用nginx + php-fpm部署多个不同端口网站
- for 创建一个方法:键盘录入一个数 ,求它的 阶乘 及 阶乘的和
- android圆形进度条ProgressBar颜色设置
- android SQLite数据库的使用
- 2021上半年朋友圈都在传的10本书,找到了
- netbeans 添加gif图片_史上功能最强最全最好用的GIF动画制作手机app——GIF豆豆——手机ae...
- Apollo的学习笔记
- [转载] 莫烦python学习笔记之numpy.array,dtype,empty,zeros,ones,arrange,linspace
- amd与matlab,AMD CPU在MATLAB上的表现实测
- 会声会影2022Win64中文版特别版
- React-pdf:pdf预览插件实践
- tsconfig之include和exclude详解
- 百度统计热力图邀请码
- matlab怎么求解二元高次方程,高次二元方程求解
- error: incompatible types when assigning to type ‘const struct wiphy_wowlan_support‘
- python_生成器简介
- packet tracer配置ssh、telnet
- latex的段落间距设置
- Vue项目实战引入百度地图(一)