D. Recommendations-(贪心+优先队列)

总结

重庆市赛的原题,当时自己亲手写的,这次自己写了一堆BUG,恼火的很,这次自己调试一个小时没调试出来了,太痛苦了

问题

经过但未使用升级之后,再取最大的,自己取了只取了经过但未使用,忽略了升级成x,还有很多x等级的消耗时间更大

题目链接

bool cmp(pair<int,int> a,pair<int,int> b)
{
    if(a.F==b.F)
        return a.S>b.S;
    return a.F<b.F;
}
signed main()
{
    IOS;
    //file();
    int n;
    cin>>n;
    vector<pair<int,int> >vec(n);
    priority_queue<int>pri;
    for(auto &it:vec)
        cin>>it.F;
    for(auto &it:vec)
        cin>>it.S;
    sort(all(vec),cmp);
    int index=0,ans=0,sum=0;
    for(int i=0;i<n;i++)
    {
        int cnt=vec[i].F-index;
        if(cnt>0)
        {
            for(int j=0;j<cnt&&(!pri.empty());j++)
                sum-=pri.top(),pri.pop(),ans+=sum;
            index=vec[i].F;
        }
        pri.push(vec[i].S),sum+=vec[i].S;
    }
    while(!pri.empty())
        sum-=pri.top(),pri.pop(),ans+=sum;
    cout<<ans<<endl;
    return 0;
}
发布了149 篇原创文章 · 获赞 5 · 访问量 6909

猜你喜欢

转载自blog.csdn.net/weixin_44224825/article/details/104476629
今日推荐