比赛 2026.5.30 评测结果 AAAAAAWAAAWAWATTATTT
题目名称 雨和卡布奇诺 最终得分 60
用户昵称 汐汐很希希 运行时间 6.189 s
代码语言 C++ 内存使用 9.28 MiB
提交时间 2026-05-30 09:32:59
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
#define PII pair<int,int>
#define mp make_pair
#define fi first
#define se second
using namespace std;
const int N=1e5+10;
int n,m,l[N],k[N],ans=0;
PII x[N];
vector<PII> c[N];
vector<PII> p[N];
int find(int s)
{
    for(int i=1;i<=n;i++) if(x[i].fi==s) return i;
    return -1;
}
int main()
{
    freopen("Cappuccino.in","r",stdin);
    freopen("Cappuccino.out","w",stdout);
    
    cin>>n;
    for(int i=1;i<=n;i++){
        int a,b;
        cin>>a>>b;
        x[i]=mp(a,b);
    }
    cin>>m;
    for(int T=1;T<=m;T++){
        cin>>l[T];
        c[T].push_back(mp(-1,-1));
        for(int i=1;i<=l[T];i++){
            int a,b;
            cin>>a>>b;
            PII t=mp(a,b);
            c[T].push_back(t);
        }
        cin>>k[T];
        p[T].push_back(mp(-1,-1));
        for(int i=1;i<=k[T];i++){
            int c,d;
            cin>>c>>d;
            p[T].push_back(mp(c,d));
        }
    }
    bool flag=true;
    int i=1,cnt=m,tmp=0;
    while(flag){
        if(l[i]!=-1) tmp++;
        if(i>m) i-=m;
        //cout<<i<<' '<<tmp<<' '<<cnt<<' '<<ans<<' '<<l[i]<<endl;
        bool f=true;
        for(int j=1;j<=l[i];j++){
            int pos=find(c[i][j].fi);
            //cout<<pos<<' '<<c[i][j].fi<<' '<<c[i][j].se<<endl;
            if(pos==-1) {f=false;break;}
            else if(x[pos].se<c[i][j].se) {f=false;break;}
        }
        if(f&&l[i]!=-1){
            for(int j=1;j<=k[i];j++){
                int pos=find(p[i][j].fi);
                if(pos>0) x[pos].se+=p[i][j].se;
                else x[++n]=p[i][j];
            }
            l[i]=-1;
            cnt--;
            tmp=0;
            ans++;
        }
        i++;
        if(cnt==0) flag=false;
        if(tmp>cnt) flag=false;
    }
    cout<<ans<<endl;
    return 0;
}