| 比赛 |
2026.5.30 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
| 题目名称 |
雨和卡布奇诺 |
最终得分 |
100 |
| 用户昵称 |
终焉折枝 |
运行时间 |
1.208 s |
| 代码语言 |
C++ |
内存使用 |
10.24 MiB |
| 提交时间 |
2026-05-30 09:23:11 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pi pair<int, int>
#define umap unordered_map
#define pq priority_queue
#define mk make_pair
const int N = 1e5 + 5;
int n, m;
int l[N], k[N];
umap<int, ll> ut;
umap<int, pq<pi, vector<pi>, greater<pi> > > mp;
queue<int> q;
vector<pi> tsk[N];
int main(){
freopen("Cappuccino.in", "r", stdin);
freopen("Cappuccino.out", "w", stdout);
cin.tie(0) -> ios::sync_with_stdio(0);
cin >> n;
for(int i = 1;i <= n;i ++){
int t, u; cin >> t >> u;
ut[t] = u;
}
cin >> m;
for(int i = 1;i <= m;i ++){
cin >> l[i];
if(!l[i]) q.push(i);
for(int j = 1;j <= l[i];j ++){
int a, b; cin >> a >> b;
mp[a].push(mk(b, i));
}
cin >> k[i];
for(int j = 1;j <= k[i];j ++){
int c, d; cin >> c >> d;
tsk[i].push_back(mk(c, d));
}
}
for(pi x : ut){
int t = x.first, u = x.second;
// pq<pi, vector<pi>, greater<pi> > Q = mp[t];
while(!mp[t].empty()){
pi now = mp[t].top();
if(now.first > ut[t]) break;
mp[t].pop();
l[now.second] --;
if(!l[now.second]) q.push(now.second);
}
}
int ans = 0;
while(!q.empty()){
int now = q.front();
q.pop();
for(pi x : tsk[now]){
int t = x.first, u = x.second;
ut[t] += u;
// pq<pi, vector<pi>, greater<pi> > Q = mp[t];
while(!mp[t].empty()){
pi now = mp[t].top();
if(now.first > ut[t]) break;
mp[t].pop();
l[now.second] --;
if(!l[now.second]) q.push(now.second);
}
}
ans ++;
}
cout << ans << '\n';
return 0;
}