APIO2012 派遣dispatching | 左偏树版本&&pb_ds版本

2021-06-17 09:03

阅读:389

标签:return   amp   图片   soscw   open   from   htm   sele   tps   

题目链接:戳我

就是尽可能地选取排名小的,加起来就可以了。然后我们考虑利用一个大根堆,一个一个合并,如果超过派遣的钱,我们就把费用最大的那个忍者丢出队列。

左偏树,作为一个十分优秀的可并堆,我们这道题利用的就是这个数据结构。
左偏树不会?戳我
这里有一张来自HolseLee dalao的图:
技术分享图片

代码如下:

#include
#include
#include
#include
#define MAXN 100010
using namespace std;
int n,m,root,tt;
int v[MAXN],rt[MAXN],siz[MAXN],head[MAXN];
long long ans,sum[MAXN];
struct Node{int ls,rs,dis,fa;long long val;}t[MAXN];
struct Edge{int nxt,to;}edge[MAXNm&&siz[x])
    {
        siz[x]--;
        sum[x]-=t[rt[x]].val;
        rt[x]=pop(rt[x]);
    }
    ans=max(ans,(long long)siz[x]*v[x]);
}
int main()
{
    #ifndef ONLINE_JUDGE
    freopen("ce.in","r",stdin);
    #endif
    scanf("%d%d",&n,&m);
    for(int i=1;i

本来想写一个pb_ds版本的,但是好像玩不转啊qwq呜呜呜 哪个大佬来教教我啊

APIO2012 派遣dispatching | 左偏树版本&&pb_ds版本

标签:return   amp   图片   soscw   open   from   htm   sele   tps   

原文地址:https://www.cnblogs.com/fengxunling/p/10333178.html


评论


亲,登录后才可以留言!