小学生玩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 的指教,现根据这些建议,文章已进行 ...
随机推荐
- CXF之一 基础理论介绍
WebService介绍 WebService让一个程序可以透明地调用互联网程序,不用管具体的实现细节.只要WebService公开了服务接口,远程客户端就可以调用服务.WebService是基于 ...
- 使用IP欺骗Loadrunner并发测试小结
测试要求: 在本次测试中,我需要并发50个User,每一个User占用一个独立的IP,并且只执行一次脚本.脚本中发起两个请求,其中第一次请求返回200后才执行第二个请求.使用win7 OS. ...
- WinForm使用webbrowser爬取数据,中文乱码问题
使用winform中的webbrowser抓取某个网站的数据时,遇到中文乱码的问题: 当时使用的获取网页内容的代码为: webBrowser1.DocumentText.ToString(); 不管我 ...
- C++实现离散余弦变换(参数为二维指针)
C++实现离散余弦变换(参数为二维指针) 写在前面 到目前为止已经阅读了相当一部分的网格水印等方面的论文了,但是论文的实现进度还没有更上,这个月准备挑选一些较为经典的论文,将其中的算法实现.在实现论文 ...
- nodejs写的一个网页爬虫例子(坏链率)
因为工作需要,用nodejs写了个简单的爬虫例子,之前也没用过nodejs,连搭环境加写大概用了5天左右,so...要多简陋有多简陋,放这里给以后的自己看~~ 整体需求是:给一个有效的URL地址,返回 ...
- bzoj 3931 [CQOI2015]网络吞吐量(最短路,最大流)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3931 [题意] 只能通过1-n的最短路,求网络最大流 [思路] 分别以1,n为起点做最 ...
- Codeforces Round #362
A - Pineapple Incident #pragma comment(linker, "/STACK:102c000000,102c000000") #include &l ...
- Tkinter教程之Event篇(2)
本文转载自:http://blog.csdn.net/jcodeer/article/details/1823548 '''Tkinter教程之Event篇(2)''''''5.测试离开(Leave) ...
- 最长公共子序列LCS
LCS:给出两个序列S1和S2,求出的这两个序列的最大公共部分S3就是就是S1和S2的最长公共子序列了.公共部分 必须是以相同的顺序出现,但是不必要是连续的. LCS具有最优子结构,且满足重叠子问题的 ...
- ACM1998
/* 魔方阵,古代又称“纵横图”,是指组成元素为自然数1.2…n的平方的n×n的方阵, 其中每个元素值都不相等,且每行.每列以及主.副对角线上各n个元素之和都相等. 输入一个奇数,实现奇数魔方阵. 附 ...