小学生玩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 的指教,现根据这些建议,文章已进行 ...
随机推荐
- 【转】如何用WINDBG分析64位机上32位程序的DUMP文件
将dump拖入到windbg中后,在command输入栏输入 .load wow64exts 回车 !sw 回车,就将windbg的dump,从64位模式切换到了32位模式,否则看到的call sta ...
- HDU 2222 (AC自动机模板题)
题意: 给一个文本串和多个模式串,求文本串中一共出现多少次模式串 分析: ac自动机模板,关键是失配函数 #include <map> #include <set> #incl ...
- 简单把webdriver的find_element方法写成函数
__author__ = 'jyd' from selenium.webdriver.common.by import By #driver webdriver实例化对象 #element 查询元素的 ...
- 《Python 学习手册4th》 第七章 字符串
''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书) “重点 ...
- mvc JavaScriptResult的用法
一.JavaScriptResult在MVC中的定义的代码片段 C# 代码 复制 public class JavaScriptResult : ActionResult { public o ...
- bzoj 4006 [JLOI2015]管道连接(斯坦纳树+状压DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4006 [题意] 给定n点m边的图,连接边(u,v)需要花费w,问满足使k个点中同颜色的 ...
- 多校5 1004 HDU5784 统计锐角三角形数目
http://acm.hdu.edu.cn/showproblem.php?pid=5784 题意:n个点,找多少个锐角三角形数目 思路:极角排序+two pointers 当前选择的点集要倍增一倍, ...
- Codeforces Round #372 (Div. 1) B. Complete The Graph (枚举+最短路)
题目就是给你一个图,图中部分边没有赋权值,要求你把无权的边赋值,使得s->t的最短路为l. 卡了几周的题了,最后还是经群主大大指点……做出来的…… 思路就是跑最短路,然后改权值为最短路和L的差值 ...
- HTML5每日一练之input新增加的5种其他类型1种标签应用
今天介绍input在HTML5中的最后5种类型,分别是:number,range,search,tel和color 注意:此种类型的input在Opera10+中效果为佳,Chrome中效果不是十分好 ...
- CodeForces 689E Mike and Geometry Problem (离散化+组合数)
Mike and Geometry Problem 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/I Description M ...