比赛 |
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;
}