比赛 2024暑期C班集训1 评测结果 EEEEEEEEEEEEEEEEEEEE
题目名称 雨和卡布奇诺 最终得分 0
用户昵称 小金 运行时间 4.291 s
代码语言 C++ 内存使用 12.78 MiB
提交时间 2024-07-01 11:56:24
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
struct zzs{
    int q1,z1,q2,z2;
}a[100010];
map<long long,int> fys;
int n,m,tot=0,sl,sk,ans=0;
long long l[100010][2],k[100010][2],ys[100010],b[100010],bm[100010];
void dfs(int s)
{
    int p;
    for(int i=1;i<=m;i++)
    {
        int flag=1;
        if(bm[i]==1)
        {
            continue;
        }
        for(int j=a[i].q1;j<=a[i].z1;j++)
        {
            if(b[l[j][1]]<l[j][2])
            flag=0;
        }
        if(flag==1)
        {
            for(int j=a[i].q2;j<=a[i].z2;j++)
            {
                b[k[j][1]]+=k[j][2];
            }
            p++;
            s++;
            bm[i]=1;
        }
    }
    if(s==m||p==0)
    {
        if(s>ans)
        {
            ans=s;
        }
        return;
    }
    dfs(s);
}
int main()
{
    freopen("Cappuccino.in","r",stdin);
    freopen("Cappuccino.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        int t;
        long long u;
        scanf("%d%lld",&t,&u);
        tot++;
        ys[tot]=t;
        b[tot]=u;
    }
    for(int i=1;i<=tot;i++)
    {
        fys[ys[i]]=i;
    }
    scanf("%d",&m);
    for(int i=1;i<=m;i++)
    {
        int ln,kn;
        scanf("%d",&ln);
        a[i].q1=sl+1;
        a[i].z1=sl+ln;
        for(int j=a[i].q1;j<=a[i].z1;j++)
        {
            int x;
            long long y;
            scanf("%d%lld",&x,&y);
            l[j][1]=fys[x];
            l[j][2]=y;
        }
        scanf("%d",&kn);
        a[i].q2=sk+1;
        a[i].z2=sk+ln;
        for(int j=a[i].q2;j<=a[i].z2;j++)
        {
            int x;
            long long y;
            scanf("%d%lld",&x,&y);
            k[j][1]=fys[x];
            k[j][2]=y;
        }
    } 
    dfs(0);
    printf("%d",ans);
    return 0;
}