社区讨论

95pts WA on #13求条

P14962 [LBA-OI R2 A] 一次买够参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mkcjejhe
此快照首次捕获于
2026/01/13 19:57
2 个月前
此快照最后确认于
2026/01/17 12:00
2 个月前
查看原帖
rt.
CPP
#include <bits/stdc++.h>
using namespace std;
long long n,m;
long long v[400005],w[400005];
bool vis[400005];
long long cst=0; 
long long o,x,y;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>v[i]>>w[i];
    multiset <long long> s;
    priority_queue<pair<long long,long long>> pq;
    for(int i=1;i<=n;i++) pq.push(make_pair(w[i],i));
    s.insert(pq.top().first);
    cst+=v[pq.top().second];
    vis[pq.top().second]=1;
    pq.pop();
    long long minn=s.empty()?LONG_LONG_MAX:*s.begin();
    while(!pq.empty())
    {
        if(pq.top().first<minn) break;
        cst+=v[pq.top().second];
        s.insert(pq.top().first);
        vis[pq.top().second]=1;
        pq.pop();
    }
    for(int i=1;i<=m;i++)
    {
        cin>>o>>x>>y;
        if(o==1)
        {
            v[n+i]=x;
            w[n+i]=y;
            pq.push(make_pair(y,n+i));
        }
        else
        {
            if(vis[x]==1)
            {
                s.erase(s.find(w[x]));
                w[x]=y;
                s.insert(y);
            }
            else
            {
                w[x]=y;
                pq.push(make_pair(y,x));
            }
        }
        minn=s.empty()?LONG_LONG_MAX:*s.begin();
        while(!pq.empty())
        {
            if(pq.top().first<minn) break;
            if(w[pq.top().second]!=pq.top().first) pq.pop();
            else
            {
                cst+=v[pq.top().second];
                s.insert(pq.top().first);
                vis[pq.top().second]=1;
                pq.pop();
            }
        }
        cout<<cst<<"\n";
    }
    return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...