小学生玩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 的指教,现根据这些建议,文章已进行 ...
随机推荐
- SPFile的使用
转:http://blog.csdn.net/pclzr/article/details/7591741 SPFile对应于SharePoint对象模型中的文件,它的使用方法与SPFolder类大致相 ...
- Android-监听sdcard状态
public class MyService extends Service { private static final String TAG = "MyService"; Fi ...
- 【原创】利用Windows系统日志统计员工每天上下班考勤时间
利用Windows系统日志统计员工每天上下班考勤时间(命令行参数为统计月份): using System; using System.Collections.Generic; using System ...
- Delphi读取Word
Delphi读取Word现在关于往Word中写入数据的方法比较多,现在专门开个贴子,希望大家把自己读取Word内容的心得体会说一下,包括读取word文档中,有几个段落,如何读取第几个段落,读取有拼音的 ...
- hdu 1544 水题
水题 /* * Author : ben */ #include <cstdio> #include <cstdlib> #include <cstring> #i ...
- 白盒测试之gtest第一个demo
认识gtest工具后,关于它的使用,下面将用一个demo程序演示一下gtest的用法以及成果展示. 一.需要测试的C++代码: #include "myfunction.h" // ...
- python学习之self,cls,staticmethod,classmethod
一.总体说明 python类里会出现这三个单词,self和cls都可以用别的单词代替,类的方法有三种, 一是通过def定义的 普通的一般的,需要至少传递一个参数,一般用self,这样的方法必须通过一个 ...
- lighttpd mod_status模块
用过nginx的status可以查看服务器的状态,之后就想lighttpd有没有这样的模块呢 之后看下配置文件,真的有,然后就试下 第一步, "mod_auth" 把这个前面的#号 ...
- [Hive - LanguageManual] Create/Drop/Alter -View、 Index 、 Function
Create/Drop/Alter View Create View Drop View Alter View Properties Alter View As Select Version info ...
- Lucene学习笔记: 五,Lucene搜索过程解析
一.Lucene搜索过程总论 搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程. 其可用如下图示: 总共包括以下几个过程: ...