社区讨论
Wrong Answer 52 pts 求调
P15258[USACO26JAN2] Declining Invitations S参与者 1已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mlnoiec1
- 此快照首次捕获于
- 2026/02/15 19:45 3 周前
- 此快照最后确认于
- 2026/02/19 23:55 2 周前
CPP
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5 + 5;
int n, c, f[N], p[N], b[N];
basic_string <ll> t[N], ans;
priority_queue <int> a[N];
ll sum;
void dfs(int u) {
while(b[u] < t[u].size()) {
int h = t[u][b[u]];
if(a[h].size() < f[h]) {
a[h].push(u);
sum += u;
break;
}
else if(u < a[h].top()){
int g = a[h].top();
sum -= a[h].top();
a[h].pop();
a[h].push(u);
sum += u;
dfs(g);
break;
}
b[u]++;
}
}
int main() {
ios :: sync_with_stdio(0);
cin.tie(0);
cin >> n >> c;
for(int i = 1; i <= c; i++) cin >> f[i];
for(int i = 1; i <= n; i++) cin >> p[i];
for(int i = 1; i <= n; i++) {
int k, x;
cin >> k;
while(k--) {
cin >> x;
t[i] += x;
}
}
for(int i = n; i >= 1; i--) {
dfs(p[i]);
ans += sum;
}
reverse(ans.begin(), ans.end());
for(auto x : ans) cout << x << '\n';
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...