小学生玩ACM----优先队列
思来想去,本人还是觉得,这个优先队列啊,不学不行,怎么说咧?虽说有时候我可以模仿它的功能,但是有的题目会坑的我大放血,况且多学会用一个小东东总不会伤身的撒,何况我是永举不垂的,哦耶,嘿嘿
优先队列嘛就是队列的一种,记得我写的栈和队列里面说了,普通队列没有q.top这个玩意儿吧?好吧,我当时好像是没加‘普通’这俩字,优先队列也就是只有返回的那个函数和普通队列不同,一个是top,一个是front,但是功能就不同了,优先队列是可以根据你自己设定的优先规则来选择性出队的呢,神马是我所说的选择性出队列?你蠢啊?这还不明白啊?去,自己那书本找语文老师去,所谓选择性就是有选择滴干活撒,优先队列的那种选择规则的写法目前我知道的是有三种咯,说不定下一种就是你首创的哦,亲~~嘿嘿
首先是我最喜欢的,就是定义的结构体里面直接写规则的
struct ssss
{
int x;
bool operator < (const ssss &a)const
{
return x>a.x;//越小越优先
}
}
定义这种的队列就直接写priority_queue<ssss> q;看清楚了,睁大你的钛合金屁眼看好,地球人都知道queue前面是个下划线,还有,别告诉我你看不清那个q后面的分号- -!
知道这个去优先级的规则是什么不?交保护费10快我就提前一秒告诉你-> .->!好吧,一秒过去了
可以这样理解,就是bool那一行里面的取了地址的a就是你操作的东东,你想的是把优先级a里面x值越小的设定优先级越高,这样这样...嘿嘿,就形成了一个伟大的结构体----上面的一个-.-!这样总算是理解了吧?好吧,我再扯,我就假设用来一个结构体元素a来装当前最优的元素,拿这当前优先级最高的和队列里面其他的一个一个比,如果比较的那些元素的x比a的x更小,那么return的就是true,这里不会不理解吧?嘿嘿,看来你还不本嘛,是的,不是true,应该是false -> .->!你可以自己这样想,当比较中返回的是ture的时候就说明当前跟他比较的元素比他在你设定的这个优先规则里面更优先那接着肿么办?擦,当然是长得丑的滚一边呗,难道这个最优先的位置还要留它一半?
唉,算理解了吧?不懂得给你一首歌的时间消化消化.........好了,一分钟过了,没消化?那算了,别逼我骂你蠢,我也是今天2小时前看的优先队列...
然后,不是还有两种长的丑的写法么?我是不打算说了列,觉得不实用,什么?你说我不会用?擦,那要是写出来了你要请我吃饭,还要把老婆分我一半。
struct cmp
{
bool operator ()(int &a,int &b)
{
return a>b;//越小越优先
}
}
定义这种队列就直接写priority_queue<int,vector<int>,cmp> q;里面第一个int是队列里面装的数据的类型,就像上面那个我的ssss一样(ssss可是我的最爱哦,你们不许用),cmp就是这个结构体了,也就是所谓的优先规则,这个我就不多说列,还要另外写一个结构体来装这些鸟不拉屎的东西,多麻烦啊,你想说这样可以定义多个,然后想用哪个用哪个是吧?喔喔喔,你好聪明,跟猪有的比了,这又区别哈?别逗我OK?
还有一个吧,这个是不用写这些东西的,就是系统给你送来点套餐,不过有方便也有缺陷,至少我认为是的吧,就是只能比较一层大小,不能分多钟情况来把数据搞死搞残,比如你帮我选老婆,我要身高高的,但是不许比我还高的,大爷,您别挑着高的就往我身上丢啊,等会儿你弄个2m1的母姚明来,老子打个啵儿还要点脚尖,哦,还是不行,要上个板凳,你说我哦累不累啊?但还是给你看看这个东东吧,就是定义。
priority_queue<int.vector<int>,greater<int> > q1;//越大约优先
priority_queue<int.vector<int>,less<int> > q2;//越小越优先
这就是两种定义,我想说的就是第一个int是数据类型,就是你可以q.(int);懂?别往队列里面乱插东西,还有啊,好到没?我放了好大一堆空格的啊,你那咪咪眼不会看不见吧- -!您老可真的不能逗我哈,好了,说说为什么,你不放空格试试就知道了呗,这个只可意会不可言传,哦耶!不放的话会编译错误,电脑会把两个‘<’当成别的东西用的,忘记叫什么了,就是位运算的东西,不过你别学我这么夸张,一个空格就好,我是怕您老看不清才多来点的!
丢了这么多没用的屁话,还是木有一个超级简单的例题来得实在,是不?好吧,我就把我的优先队列处女做奉献出来,是处女做而不是处女作是因为第一我是公的,第二这只我‘做’的题,不废话了,给您老瞧瞧!
说说题意,就是一个案例,最多输入60000次吧?嘿嘿,然后是区别了,要么就是一个PUT,这时再输入一个字符串和两个数字,第一个数字是没用的,输出的时候要跟着出来的,第二个就是用来比较啊,题意是越小越优先嘛,然后还可能是GET,这时你要输出队列里面最优先的东西了,不过要是队列为空那就输出那一句英语,我讨厌英语,别逼我写EMPTY QUEUE!这句话,好吧,我写了!最后还有一个要点,就是如果最优先的是两个元素或者更多,也就是输入的第二个数字相等且是队列里面最小的那些数据,那么就输出进来最早的那个最优元素,唉~你该不会不知道用一个k来标记吧?我会告诉你直接k++就好了?好吧,我又一次背叛了我的节操,那么,来看看例题吧!
Windows Message Queue
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2576 Accepted Submission(s): 1008
PUT msg1 10 5
PUT msg2 10 4
GET
GET
GET
msg2 10
msg1 10
EMPTY QUEUE!
;
}
总结:总结个蛋蛋啊,大爷才刚看优先队列,只是有灵感领悟快一点、深一些咯,大神们别抽我,我还是个孩子,还很纯洁咯....
小学生玩ACM----优先队列的更多相关文章
- (转)女生应该找一个玩ACM的男生
1.强烈的事业心 将来,他也一定会有自己热爱的事业.而且,男人最性感的时刻之一,就是他专心致志做事的时候.所以,找一个机会在他全神贯注玩ACM的时候,从侧面好好观察他,你就会发现我说的话没错. 2.永 ...
- 【ACMER纷纷表示】女生应该找一个玩ACM的男生
1.强烈的事业心 将来,他也一定会有自己热爱的事业.而且,男人最性感的时刻之一,就是他专心致志做事的时候.所以,找一个机会在他全神贯注玩ACM的时候,从侧面好好观察他,你就会发现我说的话没错.2.永不 ...
- 小学生玩ACM----广搜
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- 小学生玩ACM----深搜
Square Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- ACM中使用 JAVA v2. 1
ACM中使用JAVA v2.1 严明超 (Blog:mingchaoyan.blogbus.com Email:mingchaoyan@gmail.com) 0.前 言 文前声明:本文只谈java用于 ...
- ACM失败之路
校赛打完,已过四月,该是准备背起行囊,踏上考研之路了,自然,得先阔别一下ACM了,想起这几年ACM路,感慨颇多,不得不一诉心肠,与大家分享一下我的ACM历程,如果有人能从此文获取一些益处,那我就很欣慰 ...
- 【转载】ACM总结
转自亲学长的总结 声明:本文是写给弱校ACM新手的一点总结,受自身水平和眼界所限,难免会有一些个人主观色彩,希望大牛指正 感谢@Wackysoft .@哇晴天 . @ 一切皆有可能1 的指教,现根据这 ...
- 【转】lonekight@xmu·ACM/ICPC 回忆录
转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...
- ACM感悟
声明:本文是写给弱校ACM新手的一点总结,受自身水平和眼界所限,难免会有一些个人主观色彩,希望大牛指正 感谢@Wackysoft .@哇晴天 . @ 一切皆有可能1 的指教,现根据这些建议,文章已进行 ...
随机推荐
- 省市区(县)三级联动代码(js 数据源)
ylbtech-JavaScript-Utility:省市区(县)三级联动代码(js 数据源) 省市区(县)三级联动代码(js 数据源) 1.A,源代码(Source Code)返回顶部 1.A.1, ...
- UI特效--Android利用ViewFlipper实现屏幕切换动画效果
.屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面,比如一个系统设置页面:一个个性化设置页面.2.介绍ViewFilpper类ViewFl ...
- UITableView 点击展开的实现
推介看下这里的 内容 http://www.cnblogs.com/kenshincui/p/3931948.html IOS8 above UITabliViewCell 利用 autolayou ...
- linux常用命令之--用户与用户组管理命令
linux的用户与用户组管理命令 1.用户和群组 groupadd:用于添加新的组群 其命令格式如下: groupadd [-option] 群组名 常用参数: -g GID:指定创建群组的GID(G ...
- Apache:如何利用.htaccess文件对PHP网站或文件进行伪静态处理
来源:http://www.ido321.com/1123.html 今天get了一招:利用.htaccess文件对PHP网站或文件进行伪静态处理. 一.检查服务器是否支持伪静态处理: 必 须要空间支 ...
- 当rsync遇到非默认端口的ssh
在使用rsync使用ssh协议,来同步远程文件的方法,rsync -zvrtopg -e ssh但是如果遇到ssh不是22端口的时候使用rsync -zvrtopg -e ‘ssh -p 端口’特别是 ...
- Python 学习笔记(四)正则、闭合、生成器
(一)正则表达式 基本规则: ^ 匹配字符串开始位置. $ 匹配字符串结束位置. \b 匹配一个单词边界. \d 匹配一个数字. \D 匹配一个任意的非数字字符. x? 匹配可选的x字符.换句话说,就 ...
- jvm所占空间的配置
http://www.cnblogs.com/mingforyou/archive/2012/03/03/2378143.html
- WScript中调用js方法
http://zhidao.baidu.com/question/484374074.html ———————————————————————————————————————————————— Sub ...
- Hibernate之基于主键映射的一对一关联关系
1. 基于主键的映射策略:指一端的主键生成器使用foreign策略,表明根据"对方"的主键来生成自己的主键,自己并不能独立生成主键.并用<param> 子元素指定使用当 ...