配对堆

没什么用 打着玩
听别人说merge和add都是O(1)的

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
const int maxn=200050;
const int maxq=400050;
struct st
{
    int a[maxn],tot,cnt;
    int top()
    {
        if(!tot)return ++cnt;
        return a[tot--];
    }
    void push(int x)
    {
        a[++tot]=x;
    }
};
struct heap
{
    st edge,node;
    int q[maxq],val[maxn];
    int first[maxn],to[maxn],next[maxn],fa[maxn],ref[maxn],hash[maxn],root;
    inline int merge(int x,int y)
    {
        if(val[x]>val[y])swap(x,y);
        int tmp=edge.top();
        to[tmp]=y;next[tmp]=first[x];first[x]=tmp;fa[y]=x;
        return x;
    }
    inline void add(int x,int y)
    {
        int u=point.Top();
        val[u]=y;
        ref[x]=u,hash[u]=x;
        if(root)root=merge(u,root);
        else root=u;
    }
    inline void cut(int x)
    {
        if(x==root || !x)return;
        fa[x]=0;
    }
    inline void change(int x,int y)
    {
        x=ref[x];
        cut(x);
        val[x]=y;
        if(x!=root)root=merge(x,root);
    }
    inline void query(int x,int y){if(!ref[x])add(x,y);else change(x,y);}
    inline int top(){return hash[root];}
    inline void pop()
    {
        int head=0,tail=0;
        for(int i=first[root];i;i=next[i])
        {
            edge.push(i);
            if(fa[to[i]]==root) fa[to[i]]=0,que[++tail]=to[i];
        }
        point.push(root);
        ref[hash[root]]=headrst[root]=fa[root]=0;
        hash[root]=0;
        root=0;
        while(head<tail)
        {
            ++head;
            if(head==tail){root=que[head];return;}
            int u=que[head],v=que[++head];
            que[++tail]=merge(u,v);
        }
    }
}pairingheap;
int main()
{
    
}
View Code

 

转载于:https://www.cnblogs.com/Kong-Ruo/p/7782664.html

%E5%8F%AA%E8%A6%81%E5%86%99%E8%BF%87%E4%BB%A3%E7%A0%81%E7%9A%84%E9%83%BD%E7%9F%A5%E9%81%93%EF%BC%8C%E5%BD%93%E4%BD%A0%E7%9A%84%E4%BB%A3%E7%A0%81%E8%BF%9B%E8%A1%8C%E7%BC%96%E8%AF%91%E9%93%BE%E6%8E%A5%E5%90%8E%E4%BE%BF%E4%BC%9A%E7%94%9F%E6%88%90%E4%B8%80%E4%B8%AA%E5%8F%AF%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F%EF%BC%8C%E8%BF%99%E4%B8%AA%E5%8F%AF%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F%E6%9C%AC%E8%B4%A8%E4%B8%8A%E6%98%AF%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%EF%BC%8C%E6%98%AF%E6%94%BE%E5%9C%A8%E7%A3%81%E7%9B%98%E4%B8%8A%E7%9A%84%E3%80%82%E5%BD%93%E6%88%91%E4%BB%AC%E5%8F%8C%E5%87%BB%E8%BF%99%E4%B8%AA%E5%8F%AF%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F%E5%B0%86%E5%85%B6%E8%BF%90%E8%A1%8C%E8%B5%B7%E6%9D%A5%E6%97%B6%EF%BC%8C%E6%9C%AC%E8%B4%A8%E4%B8%8A%E6%98%AF%E5%B0%86%E8%BF%99%E4%B8%AA%E7%A8%8B%E5%BA%8F%E5%8A%A0%E8%BD%BD%E5%88%B0%E5%86%85%E5%AD%98%E5%BD%93%E4%B8%AD%E4%BA%86%EF%BC%8C%E5%9B%A0%E4%B8%BA%E5%8F%AA%E6%9C%89%E5%8A%A0%E8%BD%BD%E5%88%B0%E5%86%85%E5%AD%98%E5%90%8E%EF%BC%8CCPU%E6%89%8D%E8%83%BD%E5%AF%B9%E5%85%B6%E8%BF%9B%E8%A1%8C%E9%80%90%E8%A1%8C%E7%9A%84%E8%AF%AD%E5%8F%A5%E6%89%A7%E8%A1%8C%EF%BC%8C%E8%80%8C%E4%B8%80%E6%97%A6%E5%B0%86%E8%BF%99%E4%B8%AA%E7%A8%8B%E5%BA%8F%E5%8A%A0%E8%BD%BD%E5%88%B0%E5%86%85%E5%AD%98%E5%90%8E%EF%BC%8C%E6%88%91%E4%BB%AC%E5%B0%B1%E4%B8%8D%E5%BA%94%E8%AF%A5%E5%B0%86%E8%BF%99%E4%B8%AA%E7%A8%8B%E5%BA%8F%E5%86%8D%E5%8F%AB%E5%81%9A%E7%A8%8B%E5%BA%8F%E4%BA%86%EF%BC%8C%E4%B8%A5%E6%A0%BC%E6%84%8F%E4%B9%89%E4%B8%8A%E5%B0%86%E5%BA%94%E8%AF%A5%E5%B0%86%E5%85%B6%E7%A7%B0%E4%B9%8B%E4%B8%BA%E8%BF%9B%E7%A8%8B%E3%80%82
最新发布
05-20
``` onShareAppMessage: function () { var a = this; var shareData = a.data.shareUrl || {}; // 确保存在默认值 return { title: decodeURIComponent(shareData.title || &#39;默认标题&#39;), // 解码标题 desc: decodeURIComponent(shareData.desc || &#39;默认描述&#39;), path: "/xlj_scity/pages/my/index?wb_url=" + encodeURIComponent(shareData.link || &#39;&#39;) + "&vs=3", // 动态拼接路径 imageUrl: encodeURIComponent(shareData.imgUrl) || &#39;&#39; // 设置图片链接,默认为空字符串 }; },```如何获取页面参数里的用于小程序分享页面,帮我修改代码,以下为页面参数:url: "/xlj_scity/pages/share/index?dat=%7B%22title%22%3A%22%E6%95%B4%E7%A7%9F%C2%B7%E5%8D%95%E9%97%B4%E7%A7%9F%E9%87%911450%E5%85%83%2F%E6%9C%88%E5%8D%8A%E5%B9%B4%E8%B5%B7%E7%A7%9F%E5%85%AC%E5%AF%93%E7%9B%B4%E7%A7%9F%E7%B2%BE%E8%A3%85%E5%85%AC%E5%AF%93401%E6%A5%BC%E4%B8%8D%E5%AD%98%E5%9C%A8%E5%BC%95%E6%B5%81%EF%BC%8C%E8%A7%86%E9%A2%91%E5%92%8C%E4%BB%B7%E6%A0%BC%E6%98%AF%E4%B8%80%E8%87%B4%E7%9A%84%EF%BC%8C%E4%B8%8D%E6%98%AF%E4%B8%B2%E4%B8%B2...%22%2C%22desc%22%3A%22%E4%B8%8D%E5%AD%98%E5%9C%A8%E5%BC%95%E6%B5%81%EF%BC%8C%E8%A7%86%E9%A2%91%E5%92%8C%E4%BB%B7%E6%A0%BC%E6%98%AF%E4%B8%80%E8%87%B4%E7%9A%84%EF%BC%8C%E4%B8%8D%E6%98%AF%E4%B8%B2%E4%B8%B2%E6%88%BF%EF%BC%8C%E8%A3%85%E4%BF%AE%E5%B7%B2%E6%9C%89%E4%B8%80%E5%B9%B4%E5%8D%8A%EF%BC%8C%E5%85%A8%E5%85%89%E7%BA%BF%EF%BC%8C%E5%85%A8%E6%96%B0%E5%AE%B6%E7%94%B5%E5%AE%B6%E7%A7%81%EF%BC%8C%E5%AF%86%E7%A0%81%E9%94%81%E5%BC%80%E9%97%A8%EF%BC%8C%E6%A5%BC%E4%B8%8B%E5%8F%AF%E5%81%9C%E6%94%BE%E7%94%B5%E5%8A%A8%E8%BD%A6%EF%BC%8C%E5%B9%B6%E9%85%8D%E5%85%85%E7%94%B5...%22%2C%22link%22%3A%22https%3A%2F%2Fwww.sinizf2014.com%2Fapp%2Findex.php%3Fi%3D7%26c%3Dentry%26is_wxapp%3D1%26do%3Dindex%26m%3Dxlj_scity%26xcs_sid%3D169%26do%3Dpostdetail%26m%3Dxlj_scity%26pid%3D56572%26vs%3D3%22%2C%22imgUrl%22%3A%22https%3A%2F%2Fsinizf2014cglt.oss-cn-zhangjiakou.aliyuncs.com%2Fimages%2Fscity_tmp%2F20240411%2F171283343127.jpg%22%7D"
03-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值