
堆
misayap
靴薛珂熬鳃,那锅积尽派。
——silimer
展开
-
[luogu]P1090合并排序-堆
这个是堆的作法,速度很快,只有20ms左右,插排的那个要940-960ms题面另一篇里有#include using namespace std;int siz,n,x,hp[10005],sm;int p,q;void pus(int x){ siz++; hp[siz]=x; int now=siz; while(now>1) { if(hp[now]>原创 2017-12-10 16:04:21 · 224 阅读 · 0 评论 -
模板-堆(根堆相关操作,堆排)
堆排时从小到大是pus_small&del_stob;从大到小是pus_big&del_btospus函数操作基本原理是把当前点与之上的点比对,有不符合规律的交换;del函数操作基本原理是删去堆顶的点,把最后一个节点放到堆顶进行交换比对操作,若把删去的堆顶存下来的话就是排序#includeusing namespace std;const int maxn=100005;原创 2017-12-10 15:54:20 · 260 阅读 · 0 评论 -
[luogu]P2085最小函数值-堆排的玄学运用
题目描述有n个函数,分别为F1,F2,...,Fn。定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。输入输出格式输入格式:输入数据:第一行输入两个正整数n和m。以下n行每行三个正整数,其中第i行的三个数分别位Ai、Bi和Ci。Ai输出格式:原创 2017-12-10 19:51:51 · 321 阅读 · 0 评论 -
[luogu]P1631序列合并-堆排的套路运用
题目描述有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到N^2个和,求这N^2个和中最小的N个。输入输出格式输入格式:第一行一个正整数N;第二行N个整数Ai,满足Ai第三行N个整数Bi, 满足Bi【数据规模】对于50%的数据中,满足1对于100%的数据中,满足1输出格式:输出仅一行原创 2017-12-11 23:43:31 · 322 阅读 · 0 评论 -
堆排有关题目的总结
(只能说是疑似套路,因为我现在堆排做的也很少qwq(逃//像之前的序列合并与最小函数值,都要对两个数列进行处理,暴力枚举的话时空都会爆,所以这里要用到堆的一点性质。即在对数列进行过一维处理后,只枚举一个数列,另一条带入最值与枚举数列进行处理,随后建堆。再枚举另一条数列。利用大小根堆的堆顶或其他性质决定枚举对象是否入堆,这样一来就会剪去好多情况qwq原创 2017-12-11 23:57:18 · 297 阅读 · 0 评论