zoukankan      html  css  js  c++  java
  • bzoj1150 堆应用,好题

    #include<bits/stdc++.h>
    using namespace std;
    #define maxn 100005
    #define INF 0x3fffffff
    #define pa pair<int,int>
    
    int n,k,pre[maxn],nxt[maxn],len[maxn];
    priority_queue<pa,vector<pa>,greater<pa> >q;
    
    int main(){
        scanf("%d%d",&n,&k);
        int now,last=0;
        for(int i=1;i<=n;i++){
            scanf("%d",&now);
            len[i]=now-last;
            last=now;
            pre[i]=i-1;nxt[i]=i+1;
        }//len[1]是没用的 
        pre[2]=0,nxt[n]=0;
        for(int i=2;i<=n;i++)
            q.push(make_pair(len[i],i));
        int ans=0;
        while(k--){
            while(q.top().first!=len[q.top().second])
                q.pop();//这一步不能省略 
            pa tmp=q.top();q.pop();
            int pos=tmp.second;
            int l=pre[pos],r=nxt[pos];
            ans+=tmp.first;
            pre[nxt[pos]=nxt[r]]=pos;
            nxt[pre[pos]=pre[l]]=pos;
            len[pos]=l&&r?min(INF,len[l]+len[r]-len[pos]):INF;
            len[l]=len[r]=INF;
            q.push(make_pair(len[pos],pos));
        }
        printf("%d
    ",ans);
    }
  • 相关阅读:
    RBAC-基于角色的访问控制
    django缓存机制
    drf JWT认证
    drf自动生成接口文档
    drf多表断表操作
    drf过滤排序分页异常处理
    drf认证权限频率
    drf路由组件
    drf视图组件
    drf请求与响应
  • 原文地址:https://www.cnblogs.com/zsben991126/p/10247587.html
Copyright © 2011-2022 走看看