欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

[转载] 管Q某犇借的手写堆

发布时间:2025/5/22 编程问答 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 [转载] 管Q某犇借的手写堆 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

跟gxy大神还有yzh大神学了学手写的堆,应该比stl的优先队列快很多。 
其实就是维护了一个二叉堆,写进结构体里,就没啥了。。。 
据说达哥去年NOIP靠这个暴力多骗了分

合并果子。。。

1 template<class T> struct heap{//小根堆 2 T q[mxn<<2];int sz; 3 heap(){sz=0;} 4 inline void push(T x){ 5 q[++sz]=x; 6 for(int i=sz,j=i>>1;j;i=j,j>>=1) 7 if(q[i]<q[j]) swap(q[i],q[j]); 8 else break; 9 } 10 inline void pop(){ 11 q[1]=q[sz--]; 12 for(int i=1,j=i<<1;j<=sz;i=j,j=i<<1){ 13 if((j|1)<=sz&&q[j|1]<q[j]) j|=1; 14 if(q[j]<q[i]) swap(q[i],q[j]); 15 else break; 16 } 17 } 18 inline const T top(){return q[1];} 19 }; 20 heap<data> h1,h2; View Code

 

转载于:https://www.cnblogs.com/liutianrui/p/7778947.html

总结

以上是生活随笔为你收集整理的[转载] 管Q某犇借的手写堆的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。