每天进步一点点------算法小博客

最近看到了一个算法博客不错推荐一下,C20182030Epic,果然是江山代有人才出啊,除了像编写c++ permer plus的大佬刘未鹏还有轮子哥刘梓翰,还有阮一峰等大佬外,也有像硕士研究生之类的毛星云等,还有我的安卓大佬罗sheng阳,没想到高中的学生水平也不赖,因此拜读了他几篇博文并做点笔记

  1. 第一篇:优先队列priority_queue详解
    需要了解的基础知识堆排序:堆就是数组表示完全二叉树。
    树有一个有趣的性质:一个编号节点为i的结点的父亲结点编号i/2的结点,左儿子为2i,右儿子为2i+1.如果每个结点存的值都大于或等于自己所有节点的值就叫做大根堆,反之叫小根堆
void input(int d)
{
	head[size++]=d;
	push_head(head,head+size,greater<int>());
}

**queue就是一个遵守FIFO策略的链表,先进先出策略,需要两个头文件,#include

  1. queue的声明与构造函数
  2. queue<数据结构>队列名
  3. queue的基本操作
    q.size();//返回q里元素的个数
    q.push(k);//在q的末尾插入k
    q.pop();//删除掉q的第一个元素
    优先队列有哪些强大之处呢
    自动排序
    using namespace std:就是一个叫做"std"的namespace,里面封存了一些东西
    一个优先队列声明的基本格式
priority_queue<数据结构>队列名;
priority_queue<结构名,vector<结构名>,greater/less<结构名> >队列名;
 可以简写为priority_queue<结构名>,不过这样只能从大到小了
 三个结构体名保持一致,要求结构有小于的规则,系统自带的数据结构小于规则是显然的,对于结构体需要通过重载运算符等方式规定。
struct point
{
	int x,y;
	bool operator<(const point &p)const
	{
	return x*x+y*y<p.x*p.x+p.y*p.y;
	//假设这是平面上的两个点,规定两个点的大小关系为距离原点的距离小者小,
	//这个函数的意思是:当你使用小于运算符判断一个点a与另一个点(函数里的
	//p)的大小关系时,系统会判断a.x*a.x+a.y*a.y是否<p.x*p.x+p.y*p.y
	//如果式子成立,说明a点小于p点return1
	}
};
priority_queue<point>QP;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值