比赛 2026.5.30 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 雨和卡布奇诺 最终得分 100
用户昵称 郑霁桓 运行时间 1.134 s
代码语言 C++ 内存使用 17.37 MiB
提交时间 2026-05-30 09:32:38
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,m,l,k,aa,bb,tt,tp,u[300005],in[300005],as;
queue<int>qq;
unordered_map<int,int> mp;
vector<pair<int,long long> >v[100005];
priority_queue<pair<long long,int> >q[300005]; 
int main(){
    freopen("Cappuccino.in","r",stdin);
    freopen("Cappuccino.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0); 
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>tp>>aa;
        if(!mp[tp]) mp[tp]=++tt;
        tp=mp[tp];
        u[tp]=aa;
    }
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>l;
        for(int j=1;j<=l;j++){
            cin>>aa>>bb;
            if(!mp[aa]) mp[aa]=++tt;
            aa=mp[aa];
            if(u[aa]<bb){
                q[aa].push({-bb,i});
                in[i]++;
            }
        }
        if(!in[i]) qq.push(i);
        cin>>k;
        for(int j=1;j<=k;j++){
            cin>>aa>>bb;
            if(!mp[aa]) mp[aa]=++tt;
            aa=mp[aa];
            v[i].push_back({aa,bb});
        }
    }
    while(!qq.empty()){
        int p=qq.front();
        qq.pop();
        as++;
        for(int i=0;i<v[p].size();i++){
            int f1=v[p][i].first,f2=v[p][i].second;
            u[f1]+=f2;
            while(!q[f1].empty()&&-q[f1].top().first<=u[f1]){
                if(!--in[q[f1].top().second]) qq.push(q[f1].top().second);
                q[f1].pop();
            }
        }
    }
    cout<<as; 
    return 0;
}