| 比赛 |
2026.5.30 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
| 题目名称 |
雨和卡布奇诺 |
最终得分 |
100 |
| 用户昵称 |
ChenBp |
运行时间 |
2.169 s |
| 代码语言 |
C++ |
内存使用 |
17.76 MiB |
| 提交时间 |
2026-05-30 10:08:30 |
显示代码纯文本
#include<iostream>
#include<vector>
#include<algorithm>
#include<unordered_map>
using namespace std;
const int N=1e5+5;
vector<int>c[N],d[N];
struct node{
int x,bl;
};
unordered_map<int,int>mp;
vector<node>re[3*N];
int de[3*N];
int cnt=0;
long long h[3*N];
int l[N],da[N];
int main() {
freopen("Cappuccino.in","r",stdin);
freopen("Cappuccino.out","w",stdout);
int n,m;
cin>>n;
for(int i=1;i<=n;i++) {
int t,u;
cin>>t>>u;
mp[t]=++cnt;
h[cnt]=u;
}
cin>>m;
for(int i=1;i<=m;i++){
int k,x,y;
cin>>l[i];
for(int j=1;j<=l[i];j++){
cin>>x>>y;
if(!mp.count(x)) mp[x]=++cnt;
re[mp[x]].push_back({y,i});
}
cin>>k;
for(int j=1;j<=k;j++){
cin>>x>>y;
if(!mp.count(x)) mp[x]=++cnt;
c[i].push_back(mp[x]);
d[i].push_back(y);
}
}
for(int i=1;i<=cnt;i++){
sort(re[i].begin(),re[i].end(),[](node x,node y){return x.x<y.x;});
}
// cout<<"---\n";
// for(int i=1;i<=cnt;i++){
// cout<<"#"<<i<<":\n";
// for(auto j:re[i]){
// cout<<j.x<<' '<<j.bl<<'\n';
// }
// }
// cout<<"---\n";
bool fl=1;
int ans=0;
for(int bl=1;bl<=m;bl++){
if(l[bl]==0){
// cout<<"*"<<bl<<endl;
ans++;
for(int j=0;j<c[bl].size();j++){
h[c[bl][j]]+=d[bl][j];
}
}
}
while(fl){
fl=0;
for(int i=1;i<=cnt;i++){
while(de[i]<re[i].size()&&re[i][de[i]].x<=h[i]){
int bl=re[i][de[i]].bl;
// cout<<i<<" "<<bl<<endl;
da[bl]++;
fl=1;
if(da[bl]==l[bl]){
// cout<<"*"<<bl<<endl;
ans++;
for(int j=0;j<c[bl].size();j++){
h[c[bl][j]]+=d[bl][j];
}
}
de[i]++;
}
}
}
cout<<ans;
return 0;
}