| 比赛 |
2026.5.30 |
评测结果 |
AAAAAAAAEEEEEEEEEEEE |
| 题目名称 |
雨和卡布奇诺 |
最终得分 |
40 |
| 用户昵称 |
zcx |
运行时间 |
1.805 s |
| 代码语言 |
C++ |
内存使用 |
3.55 MiB |
| 提交时间 |
2026-05-30 10:19:04 |
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=502;
const int M=1e5+2;
int n,m,q=0,tot=0;
int t[N],u[N],cf[2*M+N],key[2*M+N],mv[2*M+N];
bool used[N];
vector<int> a[N];
vector<int> b[N];
vector<int> c[N];
vector<int> d[N];
int find(int x){
int l=1,r=tot;
while(l<r){
int mid=(l+r)>>1;
if(mv[mid]<x) l=mid+1;
else r=mid;
}
return l;
}
signed main()
{
freopen("Cappuccino.in","r",stdin);
freopen("Cappuccino.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
for(int i=1;i<=n;i++) cin>>t[i]>>u[i],key[i]=t[i];
q=n;
cin>>m;
for(int i=1;i<=m;i++){
int l,k;
cin>>l;
for(int j=1;j<=l;j++){
int x,y;cin>>x>>y;
a[i].push_back(x);
b[i].push_back(y);
key[++q]=x;
}
cin>>k;
for(int j=1;j<=k;j++){
int x,y;cin>>x>>y;
c[i].push_back(x);
d[i].push_back(y);
key[++q]=x;
}
}
sort(key+1,key+1+q);
for(int i=1;i<=q;i++){
if(key[i]!=key[i-1]){
mv[++tot]=key[i];
}
}
for(int i=1;i<=n;i++){
t[i]=find(t[i]);
cf[t[i]]=u[i];
}
for(int i=1;i<=m;i++){
for(int j=0;j<b[i].size();j++) a[i][j]=find(a[i][j]);
for(int j=0;j<c[i].size();j++) c[i][j]=find(c[i][j]);
}
int ans=0;
while(1){
int flag=0;
for(int i=1;i<=m;i++){
if(used[i]) continue;
int fl=1;
for(int j=0;j<a[i].size();j++){
if(cf[a[i][j]]<b[i][j]){
fl=0;
break;
}
}
if(fl){
used[i]=1;
ans++;
flag=1;
for(int j=0;j<c[i].size();j++){
cf[c[i][j]]+=d[i][j];
}
}
}
if(!flag) break;
}
cout<<ans<<endl;
return 0;
}