比赛 2026.5.30 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 雨和卡布奇诺 最终得分 100
用户昵称 Ruyi 运行时间 2.680 s
代码语言 C++ 内存使用 18.02 MiB
提交时间 2026-05-30 10:12:12
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
#define N 100001
using namespace std;
ll n,m,t[N],u[N],x,y,ans,vis[N];
bool flag=true,f2;
map<ll,ll> mp;
struct node{
    ll k,l;
    vector<ll> a,b,c,d;
}a[N];
bool cmp(node c1,node c2){return c1.k>c2.k;}
int main(){
    freopen("Cappuccino.in","r",stdin);
    freopen("Cappuccino.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>t[i]>>u[i];
        mp[t[i]]=u[i];
    }
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>a[i].l;
        for(int j=1;j<=a[i].l;j++){
            cin>>x>>y;
            a[i].a.push_back(x);
            a[i].b.push_back(y);
        }
        cin>>a[i].k;
        for(int j=1;j<=a[i].k;j++){
            cin>>x>>y;
            a[i].c.push_back(x);
            a[i].d.push_back(y);
        }
    }
    sort(a+1,a+m+1,cmp);
    while(flag){
        flag=false;
        for(int i=1;i<=m;i++)
        if(vis[i]==0){
            f2=true;
            for(int j=0;j<a[i].l;j++)
            if(a[i].b[j]>mp[a[i].a[j]]){
                f2=false;
                break;
            }
            if(f2){
                flag=true;
                vis[i]=1;
                ans++;
                for(int j=0;j<a[i].k;j++) mp[a[i].c[j]]+=a[i].d[j];
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}